phpMyAdmin触发器导致一般错误:1442

时间:2016-01-27 17:21:46

标签: php mysql

我在phpMyAdmin中使用带有AFTER和INSERT的MySQL数据库设置了一个触发器:

update table1
set col1= col2

然后当我去插入一行时,会显示以下错误消息:

错误500 CDbCommand无法执行SQL语句:SQLSTATE [HY000]:常规错误:1442无法更新存储函数/触发器中的表'card',因为它已被调用此存储函数/触发器的语句使用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此特定情况下的错误消息非常明确:您正在尝试修改触发器本身被调用的触发器中的表,并且在mysql中不允许这样做。请参阅Restrictions on Stored Programs上的mysql文档:

  

存储的函数或触发器无法修改已经存在的表   被调用的语句用于(读或写)   功能或触发器。

如果您知道col1必须与col2具有相同的值,则在insert语句本身中设置它。如果逻辑比这更复杂,那么使用存储过程来执行插入和后续更新,并将触发器保留在其中。