Comprobar @@TRANCOUNT en una construcción TRY...CATCH
La persona titular de la cuenta 10 ha ganado un sorteo y recibirá 200 \(. Preparas un script sencillo para añadir esos 200 \) al current_balance de la cuenta 10. Crees que lo has escrito todo bien, pero prefieres revisar tu código.
De hecho, cometiste un error tonto al sumar el dinero: SET current_balance = 'current_balance' + 200. Escribiste 'current_balance' como una cadena, lo que genera un error.
El script que crees debe hacer un rollback de cualquier cambio si se produce un error, comprobando si hay una transacción abierta. Si todo va bien, la transacción debe confirmarse (commit), también comprobando si hay una transacción abierta.
Este ejercicio forma parte del curso
Transacciones y control de errores en SQL Server
Instrucciones del ejercicio
- Inicia la transacción.
- Corrige el error en la operación.
- Dentro del bloque
TRY, comprueba si hay una transacción y haz commit. - Dentro del bloque
CATCH, comprueba si hay una transacción y haz rollback.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
BEGIN TRY
-- Begin the transaction
___ ___;
-- Correct the mistake
UPDATE accounts SET current_balance = 'current_balance' + 200
WHERE account_id = 10;
-- Check if there is a transaction
IF ___ > 0
-- Commit the transaction
___ ___;
SELECT * FROM accounts
WHERE account_id = 10;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Check if there is a transaction
IF ___ > 0
-- Rollback the transaction
___ ___;
END CATCH