0
我們有這個真正不想要的更新查詢到我們的表A.並且這個表包含更新表B,C的更新後觸發器。我們殺掉了表A中Update語句的主要事務,問題是否也回滾了表B和C中的更改?或者更新觸發器甚至被調用?因爲我們在整個執行結束前殺死了會話。提前致謝。是在會話終止(事務回滾)後更新觸發器被終止後?
我們有這個真正不想要的更新查詢到我們的表A.並且這個表包含更新表B,C的更新後觸發器。我們殺掉了表A中Update語句的主要事務,問題是否也回滾了表B和C中的更改?或者更新觸發器甚至被調用?因爲我們在整個執行結束前殺死了會話。提前致謝。是在會話終止(事務回滾)後更新觸發器被終止後?
如果...
...然後回滾(包括從會話中終止的隱式回滾)回滾全部在事務中進行的更改(包括觸發器所做的更改)以及級聯外鍵操作。
觸發器(和級聯)在MySQL中從不推遲,因此當行正在更新時它們會觸發FOR EACH ROW
,但這當然只是學術的,因爲它們所做的所有更改都將隨着回滾而撤消。
如果表A是完整的,那麼表B和C也應該是完整的。當然,最安全的方法是取出最近的備份,並將當前的數據填充與您在備份中找到的數據進行比較,作爲一般性的完整性檢查。當然,這需要頻繁的快照備份。