Punkty zapisu i wycofywanie zmian
Kontynuujemy analizę depozytów terminowych, które wkrótce wygasną. Te o wartości powyżej 250 tys. miały największy wpływ na skutki kryzysu rynkowego w 2008 roku.
RCONHK12 (>=250 tys.) przechowuje depozyty wygasające w ciągu najbliższych trzech miesięcy, a RCONHK13 (>=250 tys.) – te wygasające między 3 a 12 miesiącami. Jeśli wartości te przekraczają 1 milion dolarów, może to spowodować niedobór płynności w banku, ponieważ są to zazwyczaj większe podmioty, które mogą też wycofać inne aktywa. Z kolei wartości poniżej 500 tys. stanowią czynnik korzystny.
W moim kodzie popełniłem(-am) kilka błędów – ustawiłem(-am) złą wartość dla depozytów przekraczających 500 tysięcy dolarów!
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w PostgreSQL
Instrukcje do ćwiczenia
- W ramach transakcji ustaw
FIELD48namature+, jeśli łączna wartość wygasających depozytów jest mniejsza niż 500 tys. dolarów, a następnie ustaw punkt zapisumatureplus_flag_set. - Ustaw
FIELD48namature-, jeśli łączna wartość wygasających depozytów mieści się między 500 tys. a 1 milionem dolarów, a następnie ustaw punkt zapisumatureminus_flag_set. - Ustaw
FIELD48namature--, jeśli łączna wartość wygasających depozytów przekracza 100 tys. dolarów (zamiast 1 miliona) – „przypadkowo" pomijając jedno0. - Wycofaj zmiany do momentu tuż po ustawieniu rekordów
mature-, a następnie policz wszystkie banki z harmonogramem dojrzewania depozytówmature--.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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--';