有什么方法可以查看触发器运行时的变量值吗? 我有以下触发器,它运行良好,但不执行更新。
delimiter //
create trigger TR_TableA
after insert on TableA
for each row
begin
set @id = 10;
update TableB l set stock = stock - new.q
where (l.id) = (@id);
end;
//
不知何故,变量 new.q 没有值,我检查了 TableA 中变量 q 的值,它确实具有我插入的值。
最佳答案
首先,正如发布的那样,您的触发器没有多大意义。
is there any way see the variables values of a trigger when it is running?
现在,查看正在插入/更新的行的值的唯一方法是将这些值插入到您可能出于调试目的而临时创建的另一个表中。例如
CREATE TABLE debug_trigger
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
stamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
value VARCHAR(255)
);
然后在你的触发器中
DELIMITER //
CREATE TRIGGER TR_TableA
AFTER INSERT ON TableA
FOR EACH ROW
BEGIN
-- save values for later examination
INSERT INTO debug_trigger(value) VALUES (NEW.q);
-- rest of logic of your trigger
-- ...
END//
DELIMITER ;
完成调试后,删除 debug_trigger
表并从触发器中删除插入语句。
关于mysql - 如何查看 MySQL 中触发器变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27736463/