MySQL on update 触发器

标签 mysql triggers

所以,我有一个带有一些字段的 MySQL 表客户

table <Customers>
ID    Name    Description    State
0     Jack    waiting        0
1     Jane    complete       1

我想写一个触发器,更新状态字段 需要将State的值设置为1,如果Description 更新并获得完整的值(value)

到目前为止,我已经想出了这个:

delimiter $$
CREATE TRIGGER customerUpdated 
    BEFORE UPDATE ON Customers
    FOR EACH ROW 
BEGIN
    IF NEW.Description = 'completed' THEN  
    UPDATE Customers SET State = '1' WHERE id = OLD.id;
END IF;
END$$
delimiter ;

但是我得到了错误:

1442 - 无法更新存储函数/触发器中的表“Customers”,因为它已被调用此存储函数/触发器的语句使用。

感谢任何帮助!

最佳答案

我认为您只需要设置 NEW.State 而不是运行 UPDATE 语句:

IF NEW.Description = 'completed' THEN  
   SET NEW.State = 1;
END IF

关于MySQL on update 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091476/

相关文章:

mysql - 生成更新查询

php - 在 PHP MYSQL 中使用 Google Chart

wpf - 有没有办法在触发器之间重用属性 setter

events - Knockout.JS:如何在组件内触发事件并使用它

mysql - 将表a中的值和表b中的id插入到表c中

mysql - 在选择时用另一个表覆盖/加入 MySQL 表

sql - 从 .Net 应用程序调用存储过程后如何检测触发器失败?

SQL触发多次插入更新

MySQL 触发插入/更新事件

google-apps-script - 拒绝 Google 表单提交或删除回复