IniziaInizia gratis

Savepoint e rollback

Continuiamo a ragionare sull’ammontare dei depositi a scadenza nel prossimo futuro. Quelli oltre i 250K hanno avuto il maggior impatto sugli esiti osservati durante il mercato del 2008.

RCONHK12 (>=250k) memorizza quelli in scadenza nei prossimi tre mesi e RCONHK13 (>=250k) quelli in scadenza tra 3 e 12 mesi. Se superano 1 milione di dollari, possono causare una carenza di fondi in banca, dato che si tratta in genere di clienti più grandi che potrebbero anche ritirare altri asset. C’è invece un fattore positivo se sono inferiori a 500K.

Ho commesso alcuni errori nel mio codice impostando il valore sbagliato per quelli oltre 500 mila dollari!

Questo esercizio fa parte del corso

Transazioni e gestione degli errori in PostgreSQL

Visualizza il corso

Istruzioni dell'esercizio

  • All’interno di una transazione imposta FIELD48 a mature+ se il totale dei depositi in scadenza è inferiore a 500 mila dollari e imposta un savepoint matureplus_flag_set.
  • Imposta FIELD48 a mature- se il totale dei depositi in scadenza è tra 500 mila e 1 milione di dollari, poi imposta un savepoint matureminus_flag_set.
  • Imposta FIELD48 a mature-- se il totale dei depositi in scadenza è maggiore di 100 mila dollari (non 1 milione) — “per errore” omettendo uno 0.
  • Annulla fino a subito dopo aver impostato i record mature- e conta tutte le banche con un piano di scadenza dei depositi mature--.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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--';
Modifica ed esegui il codice