Уровни изоляции и транзакции
SERIALIZABLE — это уровень изоляции, при котором снимок данных создаётся в момент выполнения первого запроса или оператора обновления. Если данные изменяются за пределами транзакции, возникает ошибка. При этом до первого запроса транзакция может выполнять другие действия, например объявлять переменные.
Вы снова будете работать с набором данных FFIEC — на этот раз с данными, в которых годовое изменение сберегательных депозитов RCON0352 затронуто значительным смещением.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- Запустите транзакцию в режиме
SERIALIZABLE. - Обновите все записи, в которых
RCON0352превышает 100 000, уменьшив значение на 50%. - Выполните
COMMITтранзакции. - Выберите количество записей, в которых
RCON0352по-прежнему превышает 100 000.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;