如何在MySQL中看到触发变量的值?

时间:2015-01-02 01:43:32

标签: mysql

有没有办法在运行时看到触发器的变量值? 我有以下触发器,它运行正常,但它没有做更新。

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的值,它确实有我插入的值。

1 个答案:

答案 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语句。