mysql - 如何查看 MySQL 中触发器变量的值?

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

最佳答案

首先,正如发布的那样,您的触发器没有多大意义。

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/

相关文章:

php - 用 php 回显 mysqli 数据?

php - 向当前 PHP 登录表单添加对空输入的验证

php - 无法显示 SQL 查询结果

mysql - 在压力下测试时,nodejs 运行时停止响应

php - Mysql数据库选择方法

mysql - 如何使用mysql获取订单总价?

java - 如何通过eclipse连接mysql数据库

php - Zend Framework 2 Doctrine 2 BJ Younglbood Profiler 报告未定义索引数据库

java - 异常 : ClassNotFoundException: com. mysql.jdbc.Driver

php - 记录用户事件的最佳实践是什么?