Rollback cu un savepoint
Continuând exercițiul anterior, s-a descoperit că băncile cu mai mult de 6 milioane de dolari în MMDA-uri au de două ori mai multe șanse să reziste într-o perioadă de recesiune față de cele cu valori între 5 și 6 milioane în aceeași clasă de active. În codul exemplu există o greșeală, așa că trebuie să dăm rollback la savepoint pentru a menține integritatea datelor.
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în PostgreSQL
Instrucțiuni pentru exercițiu
- Într-o tranzacție, setează
FIELD48la'MMDA+'undeRCON6810(suma MMDA) este mai mare de 6 milioane de dolari. - Setează
mmdaplus_flag_setca savepoint. - Setează
FIELD48la'MMDA+'undeRCON6810(suma MMDA) este mai mare de 5 milioane de dolari (aceasta este o greșeală). - Revino la
mmdaplus_flag_set, încheie tranzacția și numără înregistrările cu valoarea'MMDA+'.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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+';