Відкат за допомогою savepoint
Продовжуючи попередню вправу, виявляється, що банки з понад $6 млн у MMDA у двічі частіше тримаються під час спаду, ніж ті, що мають між $5 і 6 млн у цьому ж класі активів. У наведеному зразку коду я припустився помилки, тож нам потрібно відкотитися до savepoint, щоб зберегти цілісність даних.
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
- Усередині транзакції встановіть
FIELD48у значення'MMDA+'там, деRCON6810(сума MMDA) більша за $6 млн. - Створіть savepoint з назвою
mmdaplus_flag_set. - Встановіть
FIELD48у значення'MMDA+'там, деRCON6810(сума MMDA) більша за $5 млн (це помилка). - Відмініть зміни до
mmdaplus_flag_set, завершіть транзакцію та підрахуйте записи з'MMDA+'.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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+';