我有两个命令需要正确执行或者全部不执行,因此我认为我需要一个事务(transaction),但是我不知道如何正确使用它。
以下脚本有什么问题?
BEGIN TRANSACTION [Tran1]
INSERT INTO [Test].[dbo].[T1]
([Title], [AVG])
VALUES ('Tidd130', 130), ('Tidd230', 230)
UPDATE [Test].[dbo].[T1]
SET [Title] = N'az2' ,[AVG] = 1
WHERE [dbo].[T1].[Title] = N'az'
COMMIT TRANSACTION [Tran1]
GO
执行了INSERT
命令,但UPDATE
命令存在问题。
如果其中任何一个命令执行时出现错误,如何实现回滚两个命令?
SELECT ERROR_MESSAGE() AS ErrorMessage;
- Kevin LeStargeTHROW;
,如此处所述:https://dba.stackexchange.com/a/144814/184793。 - Leponzobegin transaction
被嵌套在begin try
之下,那么在rollback transaction
之前应该添加一个条件,即:if @@trancount > 0
。 - OfirDbegin transaction
嵌套在begin try
下面,那么在rollback transaction
之前应该添加一个条件,即:if @@trancount > 0
。 - undefined