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

MyS*_*DBA 1 mysql triggers insert

我有两个表t1和t2.在t2上更新后,我在t1和tr2上插入后创建了两个触发器tr1.在两个表中我更新表t2.所以,它抛出一个错误,说t2表已经在另一个触发器中更新,所以不能再次更新它.

如果有人遇到这类问题并修好它,请告诉我.

提前致谢!MySQL DBA.

shy*_*ent 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 ;
Run Code Online (Sandbox Code Playgroud)

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