XACT_ABORT y THROW
Las personas clientas más adineradas del banco donde trabajas han decidido donar el 0,01% de su current_balance a una organización sin ánimo de lucro. Te encargas de preparar el script para actualizar las cuentas de los clientes, pero debes hacerlo solo para aquellas cuentas con un current_balance superior a 5.000.000 $. La directora del banco te indica que, si no hay al menos 10 clientes con alto patrimonio, no debes realizar esta operación, porque quiere entrevistar a más clientes.
Preparas un script y, entre las múltiples formas de hacerlo, decides usar XACT_ABORT en combinación con THROW. Así, si el número de filas afectadas es menor o igual que 10, puedes lanzar un error para que la transacción se revierta.
Este ejercicio forma parte del curso
Transacciones y control de errores en SQL Server
Instrucciones del ejercicio
- Usa la configuración adecuada de
XACT_ABORT. - Inicia la transacción.
- Si el número de filas afectadas es menor o igual que 10, lanza el error con la instrucción
THROW, usando el número 55000. - Haz COMMIT de la transacción si el número de filas afectadas es mayor que 10.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
WHERE current_balance > 5000000;
IF @@ROWCOUNT <= 10
-- Throw the error
___ ___, 'Not enough wealthy customers!', 1;
ELSE
-- Commit the transaction
___ ___;