Elegir cuándo confirmar o deshacer una transacción
El banco donde trabajas ha decidido dar 100 \( a aquellas cuentas con menos de 5.000 \). Sin embargo, la dirección del banco solo quiere dar ese dinero si no hay más de 200 cuentas con menos de 5.000 $.
Preparas un script para entregar esos 100 \( y, de las múltiples formas de hacerlo, decides abrir una transacción y luego actualizar cada cuenta con un saldo inferior a 5.000 \). Después, compruebas el número de filas afectadas por la actualización usando la función @@ROWCOUNT. Si este número es mayor que 200, haces rollback de la transacción. En caso contrario, la confirmas (commit).
¿Cómo preparas el script?
Este ejercicio forma parte del curso
Transacciones y control de errores en SQL Server
Instrucciones del ejercicio
- Inicia la transacción.
- Comprueba si el número de filas afectadas es mayor que 200.
- Deshaz (rollback) la transacción si el número de filas afectadas es mayor que 200.
- Confirma (commit) la transacción si el número de filas afectadas es menor o igual que 200.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END