在明確的交易,如果我通過給BEGIN TRANS開始交易,但如果我不提供COMMIT,ROLLBACK或END TRANS,那麼應用程序會發生什麼?調用BEGIN TRANS時的結果是什麼,但不是COMMIT,ROLLBACK或END TRANS?
2
A
回答
8
什麼也沒有 - 交易仍在進行中。如果您終止連接,則會回滾。
6
由於您的事務可能會鎖定數據庫的某些部分,因此您可能會導致其他事務/查詢阻塞,直到您發出其中一個命令。
在某種程度上,這種或那種方式,交易必須完成。當某些事情發生錯誤時(例如應用程序結束),它將被回滾,除非您先提交它。
1
如果應用程序退出,則連接隱式關閉並回滾。
如果應用程序在應用程序服務器(例如ASPNET,Java應用服務器等)中運行,那麼連接可能會返回到一個池,希望它在重新使用之前被重置,並且事務最終會被回滾但可能不會立即)。
如果未使用的連接位於池中,它最終可能會被應用程序服務器關閉,此時該事務肯定會回滾。
警惕保持開放的交易太久的 - 你會持有鎖(如果你改變任何東西),並從被清理停止舊行,這可能有一個數據庫非常不利的影響有很多的「攪動」。
0
如果您打開某個交易,您將最終產生不需要的行爲。如果在您的應用程序將連接返回到池時未回滾,則會有阻塞事務。 如果回滾,您的工作就會丟失。無論哪種方式,這不是你想在生產環境中的行爲。
/HåkanWinther
相關問題
- 1. 如何在SQL Server中實現begin trans,commit trans和rollback
- 2. 使用TransactionScope執行包含BEGIN TRANS - COMMIT TRANS的多個SP
- 3. begin()== end()是什麼?
- 4. _()或{%trans%}?
- 5. 模板中的Django翻譯:trans作品「trans as」不是
- 6. {%trans「字符串」%}不能在模板上工作,但是{%trans variable%}確實如此
- 7. SQL Server 2008 R2的交易是@@ ERROR必要的,是ROLLBACK TRANS必要
- 8. hibernate transaction begin/rollback/commit vs. session.clear()
- 9. 什麼是{%trans「這是標題。」 %}用於我無法理解api
- 10. 使用std :: vector.erase(begin(),end())或std :: vector.erase(begin(),begin())是否安全?
- 11. LoadError enc/trans/single_byte.so
- 12. 如果... BEGIN ... END
- 13. Ruby - LoadError enc/trans/single_byte
- 14. AGGREGERATOR TRANS在Informatica中
- 15. If..begin..begin tran..Rollback
- 16. SessionAwareMessageListener是否需要commit()/ rollback()?
- 17. Laravel禁用slu trans轉換
- 18. 函數trans在Laravel中不起作用
- 19. std :: begin和end的const重載的目的是什麼?
- 20. Django:通過過濾器傳遞{%trans%}的結果
- 21. Django模板{%trans%}多元化
- 22. ggvis input_select on scale_numeric trans參數
- 23. django翻譯模板{%trans「something」%}
- 24. Django更改trans消息
- 25. 用BEGIN和END塊時,遇到了一個遊標爲結果
- 26. BEGIN-END BEGIN TRY-END TRY內部
- 27. Try Try Catch,Begin Commit Rollback的首選形式?
- 28. 在樹枝模板中使用trans
- 29. 「ROLLBACK TRANSACTION named_transaction」的含義是什麼?
- 30. 在JavaScript中使用begin和end結尾
真的很糟糕的標題...嘗試一些更具描述性 – 2009-06-25 07:42:02