MySQL 中的觸發器和表更新
在使用觸發器進行INSERT 操作後嘗試更新相同表時,使用者可能會遇到以下錯誤「無法更新表ACCOUNTS ...已被呼叫此觸發器的語句使用。
要解決此問題,不可能只依賴觸發器。相反,應該建立一個預存程序來處理單一事務中的 INSERT 和更新作業。透過使用預存程序手動提交更改,使用者可以規避觸發器施加的約束。
實作預存程序解決方法的步驟:
CREATE PROCEDURE update_accounts_status(IN new_account_pk BIGINT) AS BEGIN -- Insert new account INSERT INTO ACCOUNTS (user_id, edit_on, status) VALUES (?, ?, 'A'); -- Update old account UPDATE ACCOUNTS SET status = 'E' WHERE pk = ?; -- Commit changes COMMIT; END
預存程序可以不使用觸發器,而是可以在INSERT 到ACCOUNTS 表時被呼叫。這可確保插入和更新操作在單一交易中成功執行並提交。
使用預存程序的優點:
以上是如何在 INSERT 觸發器後更新 MySQL 表而不出現錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!