在明确的交易,如果我通过给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