Hacer rollback con un savepoint
Basándote en el ejercicio anterior, resulta que los bancos con más de 6 millones de dólares en MMDAs tienen el doble de probabilidades de resistir una recesión que aquellos con entre 5 y 6 millones en esa misma clase de activo. Aquí he cometido un error en el código de ejemplo y necesitamos hacer rollback al savepoint para mantener la integridad de los datos.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Dentro de una transacción, establece
FIELD48a'MMDA+'dondeRCON6810(importe de MMDA) sea mayor que 6 millones de dólares. - Define
mmdaplus_flag_setcomo savepoint. - Establece
FIELD48a'MMDA+'dondeRCON6810(importe de MMDA) sea mayor que 5 millones de dólares (esto es un error). - Deshaz hasta
mmdaplus_flag_set, finaliza la transacción y cuenta los registros con'MMDA+'.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
BEGIN;
-- Set the flag to MMDA+ where the value is greater than $6 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where RCON6810 > 6000000;
-- Set a Savepoint
___ mmdaplus_flag_set;
-- Mistakenly set the flag to MMDA+ where the value is greater than $5 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where ___ > 5000000;
-- Rollback to savepoint
___ TO ___;
COMMIT;
-- Select count of records where the flag is MMDA+
SELECT count(FIELD48) from ffiec_reci where FIELD48 = 'MMDA+';