Savepoint-uri și rollback
Continuăm să analizăm volumul depozitelor la termen care ajung la scadență în viitorul apropiat. Cele peste 250K au cel mai mare impact asupra rezultatelor observate în timpul crizei din 2008.
RCONHK12 (>=250k) stochează depozitele care ajung la scadență în următoarele trei luni, iar RCONHK13 (>=250k) pe cele care expiră între 3 și 12 luni. Dacă acestea depășesc 1 milion de dolari, pot provoca un deficit de lichidități la o bancă, deoarece sunt, de regulă, clienți mari care ar putea retrage și alte active. Există și un factor pozitiv dacă valorile sunt sub 500K.
Am făcut câteva greșeli în cod, setând valoarea greșită pentru depozitele de peste 500 de mii de dolari!
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în PostgreSQL
Instrucțiuni pentru exercițiu
- În cadrul unei tranzacții, setează
FIELD48lamature+dacă totalul depozitelor la termen este mai mic de 500 de mii de dolari și creează un savepointmatureplus_flag_set. - Setează
FIELD48lamature-dacă totalul depozitelor la termen este între 500 de mii și 1 milion de dolari, apoi creează un savepointmatureminus_flag_set. - Setează
FIELD48lamature--dacă totalul depozitelor la termen este mai mare de 100 de mii de dolari (nu 1 milion) – omițând „accidental" un0. - Anulează modificările până la punctul de după setarea înregistrărilor
mature-și numără toate băncile cu un program de scadențămature--.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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--';