當在一個SP中完成BEGIN TRANS - COMMIT TRANS並且在TransactionScope中執行多個SP時會發生什麼,並且在完成範圍之前拋出錯誤。使用TransactionScope執行包含BEGIN TRANS - COMMIT TRANS的多個SP
所以僞代碼如下
//Using TransactionScope() {
// executing SP1
// executing SP2
// executing SP3
// throw new Exception();
//}
SP2包含如下代碼。
// BEGIN TRANS
// Update Statement1
// Update Statement2
// Update Statement3
// COMMIT TRANS
如果我們假設事務在SP2中提交,會發生什麼?
- 一切都被回滾SP2
- 3語句被提交。其他一切都會回滾?
我不知道它是否重要,但爲防萬一,所有三個SP都使用一個連接對象執行,並且連接在兩個ExecuteNonQuery語句之間重新關閉並重新打開。
如果任何SP發生錯誤,事務將被回滾。如果SP2提交但SP3引發錯誤,則不會發生更新,整個事務將回滾。 – praveen
@praveen你爲什麼沒有發佈它作爲答案? – IsmailS
這是我的錯。無論如何,如果我的回答以任何方式幫助你,我會更高興 – praveen