MySQL 如何處理觸發器執行期間的錯誤?


假如一個錯誤發生在觸發器執行期間,那麼 MySQL 處理這種情況如下 −

  • 如果一個 BEFORE 觸發器失敗,則對相應行執行的操作不會被執行。
  • 一個 BEFORE 觸發器會被插入或修改行的嘗試啟用,無論此嘗試隨後是否成功。
  • 一個 AFTER 觸發器只有當任何 BEFORE 觸發器和行操作執行成功時才會被執行。
  • 無論是在 BEFORE 還是 AFTER 觸發器中,一個錯誤都會導致觸發器呼叫的整個語句失敗。
  • 對於事務表,一個語句的失敗應當導致語句執行的所有變更回滾。一個觸發器的失敗會導致語句失敗,所以觸發器的失敗也會導致回滾。對於非事務表,這樣的回滾無法完成,所以儘管這個語句失敗了,但在錯誤點之前執行的任何變更仍然有效。

更新日期: 2020 年 6 月 22 日

955 次瀏覽

開啟你的 職業生涯

透過完成該課程獲得認證

開始
廣告
© . All rights reserved.