Revenir en arrière avec un savepoint
En reprenant l’exercice précédent, il s’avère que les banques détenant plus de 6 millions \( en MMDA ont deux fois plus de chances de résister lors d’un ralentissement que celles ayant entre 5 et 6 millions \) dans cette même catégorie d’actifs. J’ai commis une erreur dans l’exemple de code, et nous devons revenir au savepoint pour préserver l’intégrité des données.
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions
- Dans une transaction, définissez
FIELD48sur'MMDA+'lorsqueRCON6810(montant MMDA) est supérieur à 6 millions $. - Définissez
mmdaplus_flag_setcomme savepoint. - Définissez
FIELD48sur'MMDA+'lorsqueRCON6810(montant MMDA) est supérieur à 5 millions $ (c’est une erreur). - Annulez jusqu’à
mmdaplus_flag_set, terminez la transaction et comptez les enregistrements'MMDA+'.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
BEGIN;
-- Set the flag to MMDA+ where the value is greater than $6 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where RCON6810 > 6000000;
-- Set a Savepoint
___ mmdaplus_flag_set;
-- Mistakenly set the flag to MMDA+ where the value is greater than $5 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where ___ > 5000000;
-- Rollback to savepoint
___ TO ___;
COMMIT;
-- Select count of records where the flag is MMDA+
SELECT count(FIELD48) from ffiec_reci where FIELD48 = 'MMDA+';