ПочатиПочніть безкоштовно

Savepoint'и та відкат

Продовжимо міркувати про обсяг строкових депозитів, що невдовзі будуть погашені. Найбільше на результати у 2008 році впливали суми понад 250 тис.

RCONHK12 (>=250k) зберігає депозити, що погашаються упродовж наступних трьох місяців, а RCONHK13 (>=250k) — ті, що спливають між 3 і 12 місяцями. Якщо ці суми перевищують $1 млн, це може спричинити нестачу ліквідності в банку, адже це зазвичай великі клієнти, які можуть також вивести інші активи. Водночас є позитивний чинник, якщо ці суми менші за $500 тис.

Я допустив(ла) кілька помилок у коді, неправильно задав(ла) значення для сум понад $500 тис.!

Ця вправа є частиною курсу

Транзакції та обробка помилок у PostgreSQL

Переглянути курс

Інструкції до вправи

  • У межах транзакції встановіть FIELD48 у значення mature+, якщо сума депозитів до погашення менша за $500 тис., і створіть savepoint matureplus_flag_set.
  • Встановіть FIELD48 у значення mature-, якщо сума депозитів до погашення між $500 тис. і $1 млн, а потім створіть savepoint matureminus_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--';
Редагувати та запускати код