有没有办法在运行时看到触发器的变量值? 我有以下触发器,它运行正常,但它没有做更新。
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的值,它确实有我插入的值。
答案 0 :(得分:0)
首先发布你的触发器没有多大意义。
是否有任何方法可以在运行时看到触发器的变量值?
现在,查看正在插入/更新的行的值的唯一方法是将这些值插入到另一个表中,您可以临时创建这些表以进行调试。例如
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 ;
完成调试drop debug_trigger
表后,从触发器中删除insert语句。