我想知道一个案子。我有一个使用数据库的项目(Oracle和Mssql)。我的项目有一个框架,我管理交易。 在线程中,我打开一个数据库连接并启动一个事务。(在事务中,有许多更新和插入查询。)当代码运行时,某种方式连接被关闭。因为我有try-catch块,所以我捕获异常和回滚事务。但;如果由于某些原因我的连接被关闭,回滚查询如何在数据库上运行?我该如何处理这种情况?如果我打开一个新连接并回滚,它是否有效?
感谢。
答案 0 :(得分:1)
你应该知道一个术语 - ACID合规性:
关于MySQL
为了在MySQL上获取此信息,您必须使用事务安全表(TST)。事务安全表Advantages:
关于SQL Server
您应该阅读“Transaction Behavior On Lost Connection”MSDN论坛主题。 要更好地了解MS SQL Server事务背后的内容,请阅读一篇好文章“Locks and Duration of Transactions in MS SQL Server”
答案 1 :(得分:0)
确保您没有使用任何自动提交功能(我认为在某些MySQL安装中默认启用)。如果你“手动”完成所有提交,那么断开的连接只会导致你永远不会提交事务,所以它不会被写入。
在大多数数据库系统中,无法重新连接回滚。