嗨,我目前對TSQL中嵌套事務的理解是,如果你有多個事務(多個事務嵌套在一個「外部」事務中),所有的事務都必須提交(使用「外部」事務是最後一個)對數據庫進行的任何更改。如果提交的數量少於未完成交易的數量,則不做與任何交易相關的更改。這是嵌套事務處理的正確概述嗎?TSQL中的嵌套事務
10
A
回答
12
您對COMMIT
的描述是正確的。
Kalen Delaney has an article covering the same type of behavior that you describe.
然而,如在卡倫的文章中討論,嵌套事務內的ROLLBACK
將其中發生回滾回滾整個外交易,不只是內部事務。
注意以下結果:
BEGIN TRAN
SELECT @@trancount
BEGIN TRAN
SELECT @@trancount
BEGIN TRAN
SELECT @@trancount
ROLLBACK TRAN
SELECT @@trancount
這MSDN文章中所描述的,Nesting Transactions:
的ROLLBACK WORK或ROLLBACK TRANSACTION語句不具有 事務名回滾所有嵌套事務並將 @@ TRANCOUNT減少爲0.使用事務的ROLLBACK事務 一組嵌套事務中最外層事務的名稱 將回滾所有嵌套事務並將@@ TRANCOUNT 減少爲0.如果您不確定是否已處於事務中,請選擇 @@ TRANCOUNT以確定它是否爲1或更多。如果@@ TRANCOUNT爲0,那麼您的 不在事務中。
3
總之,你的回答是肯定的。從Nesting Transactions:
提交內部事務被SQL Server數據庫 引擎忽略。該交易根據 在最外層交易結束時採取的行動提交或回滾。如果提交外部事務 ,則內部嵌套事務也提交 。如果外部交易回滾,則所有內部交易也會回滾,而不管內部交易是否單獨提交。
關於ROLLBACks,只允許ROLLBACK整個外部事務。
相關問題
- 1. 在TSQL中回滾嵌套事務拋出錯誤
- 2. ADO.NET中的嵌套事務
- 3. Neo4j中的嵌套事務
- 4. 春嵌套事務
- 5. EF6嵌套事務
- 6. Dropwizard嵌套事務
- 7. Spring上的嵌套事務
- 8. 嵌套存儲過程中的嵌套事務
- 9. Firebase中嵌套事務的影響?
- 10. 二郎Mnesia的嵌套事務中止
- 11. EJB中的嵌套事務行爲
- 12. 測試中的Android SQLite嵌套事務
- 13. postgresql 8.2中的嵌套事務?
- 14. J2EE 1.4中的嵌套事務支持
- 15. LINQ to SQL中的嵌套事務
- 16. JTA嵌套事務鎖
- 17. 遞歸/嵌套事務
- 18. 嵌套事務不支持
- 19. Jena TDB:嵌套事務
- 20. 事務嵌套過程
- 21. 如何在NHibernate中嵌套事務?
- 22. MySQL中允許嵌套事務嗎?
- 23. 在java中回滾嵌套事務
- 24. 原子性的嵌套事務(Propogation.REQUIRED_NEW/Propogation.NESTED)
- 25. 嵌套的Spring事務從不回滾
- 26. 自定義Windows服務中的嵌套事務問題
- 27. 嵌套事務回滾雖然TransactionScopeOption.Suppress
- 28. EntityManager嵌套事務原子性
- 29. BadRequestError:嵌套不支持事務
- 30. NHibernate,MySQL,InnoDB和嵌套事務