Savepoints y deshacer cambios
Seguimos pensando en la cantidad de depósitos a plazo que vencen en el corto plazo. Los de más de 250 K tienen el mayor impacto en los resultados observados durante el mercado de 2008.
RCONHK12 (>=250k) guarda los que vencen en los próximos tres meses y RCONHK13 (>=250k) guarda los que vencen entre 3 y 12 meses. Si estos superan 1 millón de dólares, pueden provocar falta de liquidez en un banco, ya que suelen corresponder a clientes grandes que podrían retirar también otros activos. De nuevo, hay un factor positivo si estos son inferiores a 500 K.
¡He cometido algunos errores en mi código al establecer el valor incorrecto para los de más de 500 mil dólares!
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Dentro de una transacción, establece
FIELD48enmature+si el total de depósitos que vencen es inferior a 500 mil dólares y crea un savepointmatureplus_flag_set. - Establece
FIELD48enmature-si el total de depósitos que vencen está entre 500 mil dólares y 1 millón; después crea un savepointmatureminus_flag_set. - Establece
FIELD48enmature--si el total de depósitos que vencen es mayor que 100 mil dólares (no 1 millón) — “por accidente” omitiendo un0. - Deshaz hasta justo después de haber establecido los registros
mature-y cuenta todos los bancos con un plan de vencimiento de depósitosmature--.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
BEGIN;
-- Update FIELD48 to indicate a positive maturity rathing when less than $500 thousand.
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 < 500000;
-- Set a savepoint
SAVEPOINT ___;
-- Update FIELD48 to indicate a negative maturity rathing when between $500 thousand and $1 million.
UPDATE ffiec_reci
___
WHERE RCONHK12 + RCONHK13 BETWEEN ___ AND ___;
-- Set a savepoint
SAVEPOINT ___;
-- Accidentailly update FIELD48 to indicate a double negative maturity rating when more than 100K
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 > 100000;
-- Rollback to before the last mistake
ROLLBACK TO ___;
-- Select count of records with a double negative indicator
SELECT count(FIELD48)
from ffiec_reci
WHERE FIELD48 = 'mature--';