sql - 当 commit tran 语句中的事务失败时,SQL Server 中是否需要回滚

标签 sql sql-server tsql transactions

我正在处理一些在后端使用 SQL Server 2014 的现有应用程序。我发现提交事务的模式就像

USE AdventureWorks;
GO
BEGIN TRANSACTION;
GO
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 10;
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 11;
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 12;
GO
COMMIT TRANSACTION;
GO

我想知道如果查询在提交事务语句中失败,我需要在那里有回滚语句吗?

根据这个问题Can a COMMIT statement (in SQL) ever fail? How? ,提交 tran 可能会失败,但我是否必须回滚它,因为事务尚未成功提交。当连接关闭时,SQL Server 会自动回滚吗?

请指出 MSDN 中的文档或任何您获得信息的地方。

最佳答案

我相信它会在连接关闭后。你不应该指望这一点,有很多因素需要考虑,包括连接池。我建议您查看 SET XACT_ABORT ON 和/或使用 try catch block 。

关于sql - 当 commit tran 语句中的事务失败时,SQL Server 中是否需要回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37615247/

相关文章:

Sqlite 联合和排序顺序

sql - sql命令怎么写?

java - 使用 jOOQ 查找即将到来的生日

c# - ExecuteNonQuery 无法创建 TempTable SQL Server

sql-server - 如何在 LIKE 子句中转义方括号?

SQL Server 将一个表中的所有行复制到另一个表中,即重复表

sql - 动态 SQL 存储过程不填充临时表

sql-server - 级联外连接

sql - 安全地传输存储过程

c# - 将 DataTable 作为参数传递给存储过程