2009-06-25 49 views

回答

8

什么也没有 - 交易仍在进行中。如果您终止连接,则会回滚。

6

由于您的事务可能会锁定数据库的某些部分,因此您可能会导致其他事务/查询阻塞,直到您发出其中一个命令。

在某种程度上,这种或那种方式,交易必须完成。当某些事情发生错误时(例如应用程序结束),它将被回滚,除非您先提交它。

1

如果应用程序退出,则连接隐式关闭并回滚。

如果应用程序在应用程序服务器(例如ASPNET,Java应用服务器等)中运行,那么连接可能会返回到一个池,希望它在重新使用之前被重置,并且事务最终会被回滚但可能不会立即)。

如果未使用的连接位于池中,它最终可能会被应用程序服务器关闭,此时该事务肯定会回滚。

警惕保持开放的交易太久的 - 你会持有锁(如果你改变任何东西),并从被清理停止旧行,这可能有一个数据库非常不利的影响有很多的“搅动”。

0

如果您打开某个交易,您将最终产生不需要的行为。如果在您的应用程序将连接返回到池时未回滚,则会有阻塞事务。 如果回滚,您的工作就会丢失。无论哪种方式,这不是你想在生产环境中的行为。

/HåkanWinther