Savepoints et rollback
Poursuivons la réflexion sur le montant des dépôts à terme arrivant à échéance prochainement. Ceux de plus de 250 k$ ont eu le plus d’impact sur les résultats observés lors du marché de 2008.
RCONHK12 (>= 250 k$) stocke ceux qui arrivent à échéance dans les trois prochains mois et RCONHK13 (>= 250 k\() ceux qui expirent entre 3 et 12 mois. S’ils dépassent 1 million de dollars, cela peut provoquer une pénurie de liquidités dans une banque, car il s’agit généralement de gros clients susceptibles de retirer aussi d’autres actifs. À l’inverse, il y a un effet positif si ces montants sont inférieurs à 500 k\).
J’ai commis quelques erreurs dans mon code en définissant une mauvaise valeur pour ceux de plus de 500 k$ !
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions
- Dans une transaction, définissez
FIELD48surmature+si le total des dépôts arrivant à échéance est inférieur à 500 k$, puis définissez un savepointmatureplus_flag_set. - Définissez
FIELD48surmature-si le total des dépôts arrivant à échéance est compris entre 500 k\( et 1 M\), puis définissez un savepointmatureminus_flag_set. - Définissez
FIELD48surmature--si le total des dépôts arrivant à échéance est supérieur à 100 k\( (et non 1 M\)) – en « oubliant » accidentellement un0. - Annulez jusqu’à juste après l’étape où nous avons défini les enregistrements
mature-, puis comptez toutes les banques ayant un échéancier de dépôtsmature--.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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--';