【问题标题】:Triggered update on mysql runs second timemysql 上的触发更新第二次运行
【发布时间】:2023-03-17 04:29:01
【问题描述】:
BEGIN 
SET new.Diff = DATEDIFF(new.RepairDate,new.FaultyDate);
UPDATE po
INNER JOIN xt ON po.SerialNumber = new.SerialNumber SET po.Edate = ADDDATE(po.Edate, new.Diff)
WHERE po.SerialNumber = new.SerialNumber;
END

这是我的触发语句。 我想将 datediff 使用的整数添加到 Edate。 我唯一的问题是,如果我在xt 表中插入一个测试条目来测试这个触发器,什么也不会发生。 如果我第二次插入相同的测试条目,它会像第一次尝试那样工作。 在第二次尝试之后,该条目一切正常。 我在哪里做错了? 如果这是一个愚蠢的问题,请原谅,因为我是 mysql 的新手

对不起,我的英语不好,提前谢谢你!

【问题讨论】:

  • 需要更多关于触发器的信息。是在更新之前|更新之后|插入|删除,在什么表上?一般来说,触发器不能修改它们作为触发器的表中的数据(触发器正在修改的行除外)。 Aso,我不确定您是否需要加入该更新查询。
  • 感谢您的回答。删除 JOIN 是我的问题的解决方案。
  • 我会将其添加为正确答案,以便正确关闭。

标签: mysql database date triggers


【解决方案1】:

触发器中的代码不能修改它们作为触发器的表中的数据,除了触发器被触发的行(SETting NEW.[field]);这意味着没有涉及该表的 UPDATE、INSERT 或 DELETE 操作。

触发器表的 JOIN 显然是 Ibacau 问题的根源。

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2014-12-06
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多