我正在处理一些在后端使用 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/