Savepoint'и та відкат
Продовжимо міркувати про обсяг строкових депозитів, що невдовзі будуть погашені. Найбільше на результати у 2008 році впливали суми понад 250 тис.
RCONHK12 (>=250k) зберігає депозити, що погашаються упродовж наступних трьох місяців, а RCONHK13 (>=250k) — ті, що спливають між 3 і 12 місяцями. Якщо ці суми перевищують $1 млн, це може спричинити нестачу ліквідності в банку, адже це зазвичай великі клієнти, які можуть також вивести інші активи. Водночас є позитивний чинник, якщо ці суми менші за $500 тис.
Я допустив(ла) кілька помилок у коді, неправильно задав(ла) значення для сум понад $500 тис.!
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
- У межах транзакції встановіть
FIELD48у значенняmature+, якщо сума депозитів до погашення менша за $500 тис., і створіть savepointmatureplus_flag_set. - Встановіть
FIELD48у значенняmature-, якщо сума депозитів до погашення між $500 тис. і $1 млн, а потім створіть savepointmatureminus_flag_set. - Встановіть
FIELD48у значенняmature--, якщо сума депозитів до погашення перевищує $100 тис. (а не $1 млн) — «випадково» пропустивши один0. - Виконайте відкат до стану відразу після встановлення записів з
mature-і підрахуйте всі банки з графіком погашення депозитівmature--.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
BEGIN;
-- Update FIELD48 to indicate a positive maturity rathing when less than $500 thousand.
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 < 500000;
-- Set a savepoint
SAVEPOINT ___;
-- Update FIELD48 to indicate a negative maturity rathing when between $500 thousand and $1 million.
UPDATE ffiec_reci
___
WHERE RCONHK12 + RCONHK13 BETWEEN ___ AND ___;
-- Set a savepoint
SAVEPOINT ___;
-- Accidentailly update FIELD48 to indicate a double negative maturity rating when more than 100K
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 > 100000;
-- Rollback to before the last mistake
ROLLBACK TO ___;
-- Select count of records with a double negative indicator
SELECT count(FIELD48)
from ffiec_reci
WHERE FIELD48 = 'mature--';