是否可以使用SqlTransaction類創建嵌套事務?如果是這樣,我需要注意哪些規則/限制?SqlTransaction和嵌套事務
1
A
回答
0
是的,可以創建嵌套事務。
例如:
transaction A do action #1 transaction B do action #2 transaction C do action #3 rollback transaction B transaction D do action #4 commit transaction D transaction E do action #5 commit transaction A
這個序列中,只有1個,4個和5將已經實際發生的行爲。嵌套事務除了我自己知道的事務本身的限制之外沒有任何限制。唯一必須理解的是,在「頂層」(嵌套頂部)事務提交之前,沒有任何事情是真正承諾的。
1
不幸的是SQL Server忽略提交的內部事務,as in this MSDN article.
您可以嵌套事務,但要注意此行爲可能不是你所期望的。
直到最外層的事務提交時纔會提交。
因此,在下面......
transaction A
Query A
transaction B
Query B
Commit B
Rollback A
查詢B的結果是不實際提交到數據庫。
1
您可以在SqlTransaction類上使用Save(string savePointName)
方法。這將創建一個可以在事務內部回滾的保存點。因此,如果部分代碼失敗,您將回滾到上一個保存點並重新開始。
例子:
SqlTransaction tran = _transaction as SqlTransaction;
tran.Save(savePointName);
,當你失敗了,你會做什麼:
tran.Rollback(savePointName);
你可以做你想做這個多次。這將解決您嵌套事務的問題。
相關問題
- 1. SQLTransaction和T-SQL事務
- 2. SQL嵌套事務
- 3. 嵌套事務 - MSDTC
- 4. EF6嵌套事務
- 5. 春嵌套事務
- 6. Dropwizard嵌套事務
- 7. Spring嵌套事務處理和嵌套傳播
- 8. 小巧工具和嵌套事務
- 9. Postgresql嵌套函數和事務
- 10. SQLiteDatabase嵌套事務和解決方法
- 11. NHibernate,MySQL,InnoDB和嵌套事務
- 12. django中的嵌套事務?
- 13. ADO.NET中的嵌套事務
- 14. 遞歸/嵌套事務
- 15. Neo4j中的嵌套事務
- 16. .NET中的嵌套事務
- 17. c#與sql嵌套事務
- 18. Jena TDB:嵌套事務
- 19. 嵌套事務當休眠
- 20. 事務嵌套過程
- 21. 嵌套事務的TransactionScope
- 22. 嵌套事務不支持
- 23. JTA嵌套事務鎖
- 24. 嵌套事務的目的
- 25. Spring上的嵌套事務
- 26. TSQL中的嵌套事務
- 27. 線程和事務:不支持嵌套事務
- 28. 即使沒有嵌套事務,領域異常「不允許嵌套事務」
- 29. ASP.NET:使用連接池和嵌套事務正確實現嵌套API調用
- 30. 在ActiveRecord中需要嵌套事務的嵌套UI
這實際上是我想要的行爲,但是如何使用SqlTransaction類來表達它? –