我在phpMyAdmin中使用带有AFTER和INSERT的MySQL数据库设置了一个触发器:
update table1
set col1= col2
然后当我去插入一行时,会显示以下错误消息:
错误500 CDbCommand无法执行SQL语句:SQLSTATE [HY000]:常规错误:1442无法更新存储函数/触发器中的表'card',因为它已被调用此存储函数/触发器的语句使用。
有什么想法吗?
答案 0 :(得分:0)
此特定情况下的错误消息非常明确:您正在尝试修改触发器本身被调用的触发器中的表,并且在mysql中不允许这样做。请参阅Restrictions on Stored Programs上的mysql文档:
存储的函数或触发器无法修改已经存在的表 被调用的语句用于(读或写) 功能或触发器。
如果您知道col1必须与col2具有相同的值,则在insert语句本身中设置它。如果逻辑比这更复杂,那么使用存储过程来执行插入和后续更新,并将触发器保留在其中。