如果有回滾,Update Update觸發器會啓動嗎?ORACLE回滾和觸發器
場景:假設我們更新表A,並且表A上的觸發器啓動並更新另一個表B的細節。如果由於某些處理錯誤而在表A上發生回滾,觸發器是否會導致表B回滾該更改?
如果有回滾,Update Update觸發器會啓動嗎?ORACLE回滾和觸發器
場景:假設我們更新表A,並且表A上的觸發器啓動並更新另一個表B的細節。如果由於某些處理錯誤而在表A上發生回滾,觸發器是否會導致表B回滾該更改?
是的,它會的。
觸發器在DML
語句的交易
當這個事務回滾(無論是由您或明或由DML
語句本身隱式啓動)範圍工作,由觸發器所做的所有更改也會回滾。
但是,如果你把
PRAGMA autonomous_transaction
到觸發器定義,觸發將開始自己的事務觸發器完成之前,應首先提交。
請注意 - 如果您定義了AFTER UPDATE語句級別觸發器(沒有FOR EACH ROW子句),它將不會觸發,如果表上的DML語句失敗並回滾。
因此,如果您希望記錄所有ATTEMPTS執行更新(即使它們失敗或回滾),但自動事務處理良好,但如果您只希望在觸發更新成功並提交時執行觸發操作,則BAD會失敗。謹防! – 2009-07-09 17:27:06