У меня есть 2 команды и они должны выполняться правильно или ни один из них не выполняется. Так что я думаю, что мне нужна транзакция, но я не знаю, как правильно ее использовать.Правильное использование транзакций в SQL Server 2008
В чем проблема со следующим скриптом?
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
имеет проблему. Как я могу реализовать это для отката обеих команд, если у кого-либо из них есть ошибка при выполнении?
Это более правильный ответ. –
Хороший ответ. Как написано, это приведет к подавлению сообщения об ошибке. Добавьте «PRINT ERROR_MESSAGE()» после откат, чтобы отобразить его. – atheaos
Не следует ли «НАЧАТЬ ПЕРЕВОД» [Tran1] 'размещаться внутри' TRY'? Во всяком случае - очень простой и элегантный кусок кода. –