我設置觸發在phpMyAdmin的MySQL數據庫後INSERT:phpMyAdmin的觸發器,使常規錯誤:1442
update table1
set col1= col2
後來,當我去插入一行,此錯誤消息顯示出來:
錯誤500 CDbCommand無法執行SQL語句:SQLSTATE [HY000]:常規錯誤:1442無法更新存儲的函數/觸發器中的表'卡',因爲它已被調用此存儲函數/觸發器的語句使用。
任何想法?
我設置觸發在phpMyAdmin的MySQL數據庫後INSERT:phpMyAdmin的觸發器,使常規錯誤:1442
update table1
set col1= col2
後來,當我去插入一行,此錯誤消息顯示出來:
錯誤500 CDbCommand無法執行SQL語句:SQLSTATE [HY000]:常規錯誤:1442無法更新存儲的函數/觸發器中的表'卡',因爲它已被調用此存儲函數/觸發器的語句使用。
任何想法?
在這種特殊情況下的錯誤信息是非常明確的:你正試圖修改觸發器本身被調用的那個表中,而這在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,然後將其設置在插入語句本身。如果邏輯比這更復雜,那麼使用存儲過程來執行插入和後續更新,並將觸發器留出。
你應該發佈你的觸發器sql定義。 – maxhb
不,沒有任何'CREATE TRIGGER ...' – maxhb