嗨,我目前對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. django中的嵌套事務?
- 3. ADO.NET中的嵌套事務
- 4. Neo4j中的嵌套事務
- 5. .NET中的嵌套事務
- 6. SQL嵌套事務
- 7. 嵌套事務 - MSDTC
- 8. EF6嵌套事務
- 9. 春嵌套事務
- 10. Dropwizard嵌套事務
- 11. 嵌套事務的目的
- 12. 嵌套事務的TransactionScope
- 13. Spring上的嵌套事務
- 14. 在ActiveRecord中需要嵌套事務的嵌套UI
- 15. 嵌套存儲過程中的嵌套事務
- 16. TSQL嵌套基本查詢
- 17. 嵌套遊標TSQL(SQL Server)
- 18. tSQL - SQL 2008 - 嵌套查詢?
- 19. SQL Server中的嵌套SQL事務
- 20. LINQ to SQL中的嵌套事務
- 21. J2EE 1.4中的嵌套事務支持
- 22. 二郎Mnesia的嵌套事務中止
- 23. Firebase中嵌套事務的影響?
- 24. postgresql 8.2中的嵌套事務?
- 25. 測試中的Android SQLite嵌套事務
- 26. EJB中的嵌套事務行爲
- 27. 在phonegap中嵌套的sqlite事務
- 28. SqlTransaction和嵌套事務
- 29. 遞歸/嵌套事務
- 30. c#與sql嵌套事務