gpt4 book ai didi

mysql - 如何处理触发器中的碰撞问题?

转载 作者:行者123 更新时间:2023-11-29 06:01:56 25 4
gpt4 key购买 nike

我在这样的表上有一个 TRIGGER (更新前):

UPDATE contact_us SET updated_at = unix_timestamp() WHERE id = new.id

当我使用 phpMyadmin 更新该表的一行时,它会抛出此错误:

enter image description here

为了看得更清楚:

#1442 - Can't update table 'contact_us' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

我该如何解决这个问题?

最佳答案

  1. 首先,对于此功能,您根本不需要触发器,只需将时间戳或日期时间字段与 automatic initialisation 一起使用即可。 .因此,定义 updated_at 如下:

    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  2. 如果您出于某种原因坚持使用触发器,即使那样也不要使用单独的 update 语句来更新定义触发器的同一个表,因为那是不行的(无休止的环形)。使用NEW关键字访问新建记录的字段,修改字段内容:

    set NEW.updated_at = unix_timestamp();

关于mysql - 如何处理触发器中的碰撞问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com