使用 savepoint 進行回復
延續上一題,結果發現持有超過 $6 million MMDA 的銀行,在景氣下行時維持營運的機率是持有 $5–6 million 同類資產銀行的兩倍。以下的範例程式碼有一個錯誤,我們需要回復到 savepoint 才能維持資料正確性。
本練習屬於課程
PostgreSQL 的交易與錯誤處理
練習說明
- 在一個交易中,將
RCON6810(MMDA 金額)大於 $6 million 的紀錄,其FIELD48設為'MMDA+'。 - 設定一個名為
mmdaplus_flag_set的 savepoint。 - 將
RCON6810(MMDA 金額)大於 $5 million 的紀錄,其FIELD48設為'MMDA+'(這是錯誤的)。 - 回復到
mmdaplus_flag_set,結束交易,然後計算'MMDA+'的筆數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
BEGIN;
-- Set the flag to MMDA+ where the value is greater than $6 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where RCON6810 > 6000000;
-- Set a Savepoint
___ mmdaplus_flag_set;
-- Mistakenly set the flag to MMDA+ where the value is greater than $5 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where ___ > 5000000;
-- Rollback to savepoint
___ TO ___;
COMMIT;
-- Select count of records where the flag is MMDA+
SELECT count(FIELD48) from ffiec_reci where FIELD48 = 'MMDA+';