Tengo 2 comandos y necesito que ambos se ejecuten correctamente o ninguno de ellos se ejecute. Entonces, creo que necesito una Transacción, pero no sé cómo usarla correctamente.Uso correcto de transacciones en SQL Server 2008
¿Cuál es el problema con el siguiente script?
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
El comando ejecutado insert
pero el comando update
tiene un problema. ¿Cómo puedo implementar esto para deshacer ambos comandos si alguno de ellos tiene un error en la ejecución?
Esta es una respuesta más apropiada. –
Buena respuesta. Tal como está escrito, esto suprimirá el mensaje de error. Agregue 'PRINT ERROR_MESSAGE()' después de la restauración para visualizarlo. – atheaos
¿No debería 'BEGIN TRANSACTION [Tran1]' colocarse dentro de 'TRY'? De todos modos, una pieza de código muy simple y elegante. –