НачатьНачать бесплатно

Откат транзакций с несколькими операторами

Теперь воспользуемся несколькими операторами в одной транзакции, чтобы установить флаг в поле 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';
Редактировать и запускать код