【问题标题】:MySQL After Insert and After Update TriggerMySQL 插入后和更新后触发器
【发布时间】:2009-05-09 09:29:28
【问题描述】:

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

如果有人遇到过此类问题并已解决,请告诉我。

提前致谢! MySQL DBA。

【问题讨论】:

    标签: mysql insert triggers


    【解决方案1】:

    如果您想修改 正在更新或插入的数据,您应该使用 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 ;
    

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

    【讨论】:

      【解决方案2】:

      我已经解决了这个问题,当我试图从两个触发器更新和插入同一个表 tb1 时出现问题,但我认为 Mysql 不允许修改同一个表。

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-13
        • 2013-05-24
        • 2021-03-08
        • 2018-05-26
        • 2019-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多