Savepoints och återställning
Vi fortsätter att titta på mängden tidsbundna insättningar som förfaller inom den närmaste framtiden. De som överstiger 250 000 dollar hade störst påverkan på de utfall som observerades under finanskrisen 2008.
RCONHK12 (>=250k) lagrar insättningar som förfaller inom de närmaste tre månaderna och RCONHK13 (>=250k) lagrar de som förfaller mellan 3 och 12 månader. Om dessa överstiger 1 miljon dollar kan det orsaka en likviditetsbrist i banken, eftersom det rör sig om större kunder som också kan ta ut andra tillgångar. Det finns även en positiv effekt om beloppen understiger 500 000 dollar.
Jag har gjort några misstag i min kod och angett fel värde för de insättningar som överstiger 500 000 dollar!
Den här övningen är en del av kursen
Transaktioner och felhantering i PostgreSQL
Övningsinstruktioner
- Sätt
FIELD48tillmature+i en transaktion om de totala förfallande insättningarna understiger 500 000 dollar, och sätt sedan en savepointmatureplus_flag_set. - Sätt
FIELD48tillmature-om de totala förfallande insättningarna är mellan 500 000 och 1 miljon dollar, och sätt sedan en savepointmatureminus_flag_set. - Sätt
FIELD48tillmature--om de totala förfallande insättningarna överstiger 100 000 dollar (inte 1 miljon) – du "råkar" utelämna en0. - Återställ till läget precis efter att
mature--posterna sattes, och räkna sedan alla banker med ettmature---schema för insättningsförfall.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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--';