插入后和更新后的MySQL触发器

时间:2009-05-09 09:29:29

标签: mysql insert triggers

我有两个表t1和t2。在t2上更新后,我在t1和tr2上插入后创建了两个触发器tr1。在两个表中我都在更新表t2。因此,它抛出一个错误,说t2表已经在另一个触发器中更新,因此无法再次更新。

如果有人遇到此类问题并修好问题,请告诉我。

提前致谢! MySQL DBA。

2 个答案:

答案 0 :(得分:22)

如果要修改正在更新或插入的数据 ,则应使用BEFORE UPDATE和/或BEFORE INSERT触发器,然后使用NEW别名(它引用行,即正在插入或应用更新后将看到的行) - 您实际上可以修改正在插入的字段。 OLD别名在应用更新之前引用该行或在删除之前引用该行(在删除时触发的触发器中)。

因此,对于触发器tr2,你可能需要采取以下措施:

DELIMITER $$
    CREATE TRIGGER tr2 BEFORE UPDATE ON t2
    FOR EACH ROW BEGIN
      SET NEW.field1 = some_value_you_want_to_set_it_to;
    END;
$$
DELIMITER ;

因为在触发器中你实际上无法更新一个已经更新的表,这是正确的。

答案 1 :(得分:-6)

我已经修复了这个问题,有一个问题,因为我试图更新并从两个触发器插入同一个表tb1但是Mysql不允许修改同一个表我想。

由于