嵌套事務和事務保存點的錯誤處理


嵌套事務和事務保存點的錯誤處理

 

 

對於嵌套事務。
1.外部起事務,內部起事務,內外都有Try Catch
內部出錯:如果內部事務出錯,內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。
外部出錯:如果外部事物出錯,內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。
注:如果內部的事務不起事務名稱,內部如果出錯,將會回滾掉會話中的全部事務,而且報異常。

2.外部起事務,內部起事務,內部沒有Try Catch
內部出錯:如果內部事務出錯,內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。
外部出錯:如果內部事務出錯,內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。

3.外部起事務,內部不起事務,但有Try Catch。
內部出錯:外部事物正常提交,外部事物不會進入ROLLBACK,內部出錯之后的記錄也會正常執行。內部操作中,Try部分在錯誤出現之前的操作正常,Try部分在操作之后的操作不執行,然后進入Catch塊中執行操作。
外部出錯:內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。

4.外部起事務,內部不起事務,但沒有Try Catch.
內部出錯:如果內部事務出錯,內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。
外部出錯:如果內部事務出錯,內部和外部事物全部回滾,外部回滾之前的操作全部不存在,但是之后的操作繼續執行。

5.外部不起事務,內部起事務,但有Try Catch.
內部出錯:外部操作被正常執行,內部ROLLBACK操作前全部回滾,之后的操作正常執行。
外部出錯:出錯操作之前的操作不會回滾,出錯之后的操作不執行,跳入Catch塊中,內部事務不會回滾。

6.外部不起事務,內部起事務,但沒有Try Catch.
內部出錯:外部操作被正常執行,內部ROLLBACK操作前全部回滾。由於沒有catch塊,所以外部操作全部執行。
外部出錯:內部事務正常提交,外部只有當條記錄失敗,其他操作正常執行,但是有嚴重錯誤報出來。


對於事務保存點
事務保存點只有SAVE和ROLLBACK操作,當外部調用內部保存點,內部出現問題不影響外部事務,外部操作正常執行。當外部操作出現問題時,內部所有操作都回滾掉。

如:外部起事務,內部起保存點,內外都有Try Catch
內部出錯:外部操作正常,不進入Catch,內部事務回滾到保存點,之后的繼續執行。
外部出錯:如果外部事物在保存點之前出現異常,那么外部和內部所有操作回滾。如果外部事物在保存點之前出現異常,由於保存點已經提交了事務,導致外部rollback找不到對應的事務點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM