始める無料で始める

セーブポイントとロールバック

近い将来に満期を迎える定期預金の金額について、引き続き考えていきます。特に 250K 超のものは、2008 年の市場で見られた結果に最も影響しました。

RCONHK12 (>=250k) には今後 3 か月で満期を迎えるもの、RCONHK13 (>=250k) には 3~12 か月で満期を迎えるものが格納されています。これらが $1 million を超えると、銀行に資金不足を引き起こす可能性があります。というのも、これらは通常、他の資産も引き上げる可能性のある大口顧客だからです。一方で、これらが $500K 未満であればプラス要因になります。

私は、$500 thousand 超のものに対して誤った値を設定してしまい、コードにいくつかミスをしてしまいました!

この演習はコースの一部です

PostgreSQL におけるトランザクションとエラー処理

コースを見る

演習の手順

  • トランザクション内で、総満期預金額が $500 thousand 未満なら FIELD48mature+ に設定し、セーブポイント matureplus_flag_set を設定します。
  • 総満期預金額が $500 thousand 以上 $1 million 以下なら FIELD48mature- に設定し、セーブポイント matureminus_flag_set を設定します。
  • 総満期預金額が $100 thousand 超($1 million ではありません)なら FIELD48mature-- に設定します。ここでは「うっかり」0 を 1 つ落としてしまいます。
  • 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--';
コードを編集して実行