ComenzarEmpieza gratis

Revertir una transacción si hay un error

En tu primer día de trabajo te encargan configurar transacciones que registren las transferencias de dinero en el banco.

Quieres preparar un script sencillo donde se transfieren 100 $ desde account_id = 1 hacia account_id = 5. Después, se registran esos movimientos en la tabla transactions. Crees que lo has escrito todo bien, pero como eres precavido, ¡prefieres revisarlo!

De hecho, cometiste un error. En lugar de insertar una nueva transacción para la cuenta 5, lo hiciste para la cuenta 500, que no existe.

Para evitar errores futuros, el script que crees debe hacer un rollback de cada cambio si ocurre un error. Si todo va bien, la transacción debe confirmarse (commit).

Este ejercicio forma parte del curso

Transacciones y control de errores en SQL Server

Ver curso

Instrucciones del ejercicio

  • Inicia la transacción.
  • Corrige el error en la operación.
  • Confirma la transacción si no hay errores.
  • Dentro del bloque CATCH, revierte la transacción.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

BEGIN TRY  
	-- Begin the transaction
	BEGIN ___;
		UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
		INSERT INTO transactions VALUES (1, -100, GETDATE());
        
		UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
        -- Correct it
		INSERT INTO transactions VALUES (500, 100, GETDATE());
    -- Commit the transaction
	___ TRAN;    
END TRY
BEGIN CATCH  
	SELECT 'Rolling back the transaction';
    -- Rollback the transaction
	___ ___;
END CATCH
Editar y ejecutar código