Использование уровня изоляции
Как было показано в видео, иногда важно задать уровень изоляции для отдельной транзакции. Для этого лучше использовать START TRANSACTION — псевдоним BEGIN TRANSACTION, который явно сигнализирует, что транзакция настраивается особым образом. При запуске транзакции можно указать ISOLATION LEVEL.
В этом упражнении мы используем REPEATABLE READ — уровень, защищающий от грязных чтений, неповторяемых чтений и фантомных чтений. В данных FFEIC поле RCON2210 отражает депозиты до востребования: остатки на текущих счетах, чеки, выданные банком, и незачисленные кредиты. При массовом изъятии средств это может стать серьёзной нагрузкой для банка. Найдём все банки, у которых депозиты до востребования превышают $100 000 000.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- Начните транзакцию с уровнем изоляции repeatable read.
- Выберите все записи, в которых
RCON2210превышает $100 000 000 по депозитам до востребования. - Выберите все записи, в которых
RCON2210по-прежнему превышает $100 000 000 по депозитам до востребования. - Зафиксируйте транзакцию.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- 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
___;