開始使用免費開始

Savepoints 與回滾

繼續思考未來即將到期的定期存款金額。超過 250K 的那一批,對 2008 年市場期間觀察到的結果影響最大。

RCONHK12(>=250k)儲存接下來 3 個月內到期的金額,RCONHK13(>=250k)則是儲存 3 到 12 個月之間到期的金額。若這些金額高於 $1 million,可能導致銀行資金短缺,因為這些通常是銀行的大客戶,也可能會同時抽走其他資產。相反地,若低於 $500K,會有正面影響。

我在程式碼裡犯了幾個錯,把超過 $500 thousand 的值設錯了!

本練習屬於課程

PostgreSQL 的交易與錯誤處理

檢視課程

練習說明

  • 在一個交易中,若總到期存款低於 $500 thousand,將 FIELD48 設為 mature+,並設定 savepoint matureplus_flag_set
  • 若總到期存款介於 $500 thousand 與 $1 million 之間,將 FIELD48 設為 mature-,接著設定 savepoint matureminus_flag_set
  • 若總到期存款大於 $100 thousand(不是 $1 million),將 FIELD48 設為 mature--——因為「不小心」少打一個 0
  • 往回復原到我們剛設定完 mature- 紀錄之後的狀態,並計算所有 mature-- 到期時程的銀行數量。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

BEGIN;

-- Update FIELD48 to indicate a positive maturity rathing when less than $500 thousand.
UPDATE ffiec_reci 
SET ___ = '___' 
WHERE RCONHK12 + RCONHK13 < 500000;

-- Set a savepoint
SAVEPOINT ___;

-- Update FIELD48 to indicate a negative maturity rathing when between $500 thousand and $1 million.
UPDATE ffiec_reci 
___ 
WHERE RCONHK12 + RCONHK13 BETWEEN ___ AND ___;

-- Set a savepoint
SAVEPOINT ___;

-- Accidentailly update FIELD48 to indicate a double negative maturity rating when more than 100K
UPDATE ffiec_reci 
SET ___ = '___' 
WHERE RCONHK12 + RCONHK13 > 100000;

-- Rollback to before the last mistake
ROLLBACK TO ___;

-- Select count of records with a double negative indicator
SELECT count(FIELD48) 
from ffiec_reci 
WHERE FIELD48 = 'mature--';
編輯並執行程式碼