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

时间:2017-05-31 09:48:12

标签: mysql sql triggers phpmyadmin

我在这样的桌子上有一个TRIGGER (更新前)

cardview

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

enter image description here

要更清楚地看到它:

  

#1442 - 无法更新存储函数/触发器中的表'contact_us',因为它已被调用此存储函数/触发器的语句使用。

我该如何解决问题?

1 个答案:

答案 0 :(得分:2)

  1. 首先,您根本不需要触发此功能,只需使用带有automatic initialisation的时间戳或日期时间字段。因此,请按以下方式定义updated_at

    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    
  2. 如果您因任何原因坚持使用触发器,即使这样也不要使用单独的update语句来更新同一个表,因此定义了触发器,因为它不会发生(无休止)环)。使用NEW关键字访问新创建记录的字段以修改字段的内容:

    set NEW.updated_at = unix_timestamp();