複数文のロールバック
ここでは、トランザクション内で複数の文を使い、RCON2203 に米州政府(US州政府)資産、RCON2236 に海外資産、またはその両方を保有しているかに基づいて、FIELD48 にフラグを設定します。FIELD48 の値は、それぞれ 'US-STATE-GOV'、'FOREIGN'、'BOTH' にする必要があります。ただし、両方の場合の文にミスがありました。
この演習はコースの一部です
PostgreSQL におけるトランザクションとエラー処理
演習の手順
- それぞれの条件を検出してフラグを設定する、3つの UPDATE 文を作成します。
'BOTH'ではなく'BOOTH'に設定してしまったミスを、トランザクションのロールバックで取り消します。- フラグが
'BOOTH'に設定されているレコード数を取得する SELECT を実行します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- 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';