Fazendo rollback com um savepoint
Dando continuidade ao último exercício, descobrimos que bancos com mais de US\( 6 milhões em MMDAs têm o dobro de chance de se manter durante uma crise do que aqueles com entre US\) 5 e 6 milhões nessa mesma classe de ativos. Aqui há um erro no código de exemplo, e precisamos fazer rollback até o savepoint para manter a integridade dos dados.
Este exercício faz parte do curso
Transações e Tratamento de Erros no PostgreSQL
Instruções do exercício
- Dentro de uma transação, defina
FIELD48como'MMDA+'ondeRCON6810(valor de MMDA) for maior que US$ 6 milhões. - Defina
mmdaplus_flag_setcomo um savepoint. - Defina
FIELD48como'MMDA+'ondeRCON6810(valor de MMDA) for maior que US$ 5 milhões (isso é um erro). - Desfaça até
mmdaplus_flag_set, finalize a transação e conte os registros'MMDA+'.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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+';