Откат транзакций с несколькими операторами
Теперь воспользуемся несколькими операторами в одной транзакции, чтобы установить флаг в поле FIELD48 в зависимости от типа активов: активы правительства штата США представлены в RCON2203, иностранные активы — в RCON2236, а оба типа сразу — в обоих полях. Поле FIELD48 должно принимать значения 'US-STATE-GOV', 'FOREIGN' или 'BOTH' соответственно. Однако в операторе для обоих типов сразу была допущена ошибка.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- Напишите 3 оператора UPDATE для определения каждого условия и установки соответствующего флага.
- Отмените ошибку: вместо
'BOTH'было введено значение'BOOTH'— выполните откат транзакции. - Выберите количество записей, в которых флаг установлен в значение
'BOOTH'.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- Begin a new transaction
BEGIN;
-- Update FIELD48 flag status if US State Government deposits are held
UPDATE ffiec_reci
SET ___ = 'US-STATE-GOV'
WHERE RCON2203 > 0;
-- Update FIELD48 flag status if Foreign deposits are held
UPDATE ffiec_reci
SET FIELD48 = '___'
WHERE RCON2236 > 0;
-- Update FIELD48 flag status if US State Government and Foreign deposits are held
UPDATE ffiec_reci
SET FIELD48 = 'BOOTH'
WHERE RCON2236 > 0
AND ___ > 0;
-- Undo the mistake
___;
-- Select a count of records that are booth (it should be 0)
SELECT COUNT(FIELD48)
FROM ffiec_reci
WHERE ___ = 'BOOTH';