Rollback con un savepoint
Proseguendo dall'esercizio precedente, risulta che le banche con più di 6 milioni di dollari in MMDA hanno il doppio delle probabilità di resistere durante una fase di recessione rispetto a quelle con tra 5 e 6 milioni nella stessa classe di attività. Nel codice di esempio qui c'è un errore e dobbiamo tornare al savepoint per mantenere l'integrità dei dati.
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in PostgreSQL
Istruzioni dell'esercizio
- All'interno di una transazione imposta
FIELD48a'MMDA+'doveRCON6810(importo MMDA) è maggiore di 6 milioni di dollari. - Imposta
mmdaplus_flag_setcome savepoint. - Imposta
FIELD48a'MMDA+'doveRCON6810(importo MMDA) è maggiore di 5 milioni di dollari (questo è un errore). - Annulla fino a
mmdaplus_flag_set, termina la transazione e conta i record'MMDA+'.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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+';