Використання рівня ізоляції
Як ви бачили у відео, інколи важливо вміти встановити рівень ізоляції для окремої транзакції. Найкраще робити це за допомогою START TRANSACTION, що є синонімом BEGIN TRANSACTION, — так чітко видно, що щось відрізняється. Ви можете вказати ISOLATION LEVEL під час старту транзакції.
Тут ми використаємо REPEATABLE READ, який захищає від брудних читань, незвідних повторних читань і фантомних читань. У даних FFEIC поле RCON2210 — це сума за поточними депозитами (demand deposits) і охоплює всі непогашені рахунки за чековими рахунками, чеки, випущені банком, та непроведені зарахування. Вони можуть бути зобов'язанням для банку, якщо з будь-якої причини станеться раптовий відтік коштів. Знайдімо всі банки з понад $100,000,000 у поточних депозитах.
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
- Запустіть транзакцію з repeatable read.
- Виберіть усі записи, де
RCON2210перевищує $100,000,000 у поточних депозитах. - Повторно виберіть усі записи, де
RCON2210усе ще перевищує $100,000,000 у поточних депозитах. - Зафіксуйте транзакцію за допомогою COMMIT.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- Create a new transaction with an isolation level of repeatable read
___ TRANSACTION ___ LEVEL ___ ___;
-- Count of records over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Count of records still over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Commit the transaction
___;