2016-01-27 84 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,然後將其設置在插入語句本身。如果邏輯比這更復雜,那麼使用存儲過程來執行插入和後續更新,並將觸發器留出。