2016-01-27 57 views
0

我设置触发在phpMyAdmin的MySQL数据库后INSERT:phpMyAdmin的触发器,使常规错误:1442

update table1 
set col1= col2 

后来,当我去插入一行,此错误消息显示出来:

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

任何想法?

+0

你应该发布你的触发器sql定义。 – maxhb

+0

不,没有任何'CREATE TRIGGER ...' – maxhb

回答

0

在这种特殊情况下的错误信息是非常明确的:你正试图修改触发器本身被调用的那个表中,而这在mysql中是不允许的。查看Restrictions on Stored Programs MySQL文档:

A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

如果你知道COL1必须具有相同的值COL2,然后将其设置在插入语句本身。如果逻辑比这更复杂,那么使用存储过程来执行插入和后续更新,并将触发器留出。