Rollback pomocí savepointu
Navazujeme na předchozí cvičení. Ukázalo se, že banky s více než 6 miliony dolarů v MMDA mají dvakrát větší šanci přežít hospodářský pokles než ty, které mají v téže třídě aktiv mezi 5 a 6 miliony. V ukázkovém kódu jsem udělal chybu a potřebujeme se vrátit zpět na savepoint, abychom zachovali integritu dat.
Toto cvičení je součástí kurzu
Transakce a ošetření chyb v PostgreSQL
Pokyny k cvičení
- V rámci transakce nastav
FIELD48na'MMDA+'tam, kdeRCON6810(hodnota MMDA) je větší než 6 milionů dolarů. - Nastav savepoint s názvem
mmdaplus_flag_set. - Nastav
FIELD48na'MMDA+'tam, kdeRCON6810(hodnota MMDA) je větší než 5 milionů dolarů (toto je chyba). - Vrať se zpět na
mmdaplus_flag_set, ukonči transakci a spočítej záznamy s hodnotou'MMDA+'.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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+';