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