セーブポイントとロールバック
近い将来に満期を迎える定期預金の金額について、引き続き考えていきます。特に 250K 超のものは、2008 年の市場で見られた結果に最も影響しました。
RCONHK12 (>=250k) には今後 3 か月で満期を迎えるもの、RCONHK13 (>=250k) には 3~12 か月で満期を迎えるものが格納されています。これらが $1 million を超えると、銀行に資金不足を引き起こす可能性があります。というのも、これらは通常、他の資産も引き上げる可能性のある大口顧客だからです。一方で、これらが $500K 未満であればプラス要因になります。
私は、$500 thousand 超のものに対して誤った値を設定してしまい、コードにいくつかミスをしてしまいました!
この演習はコースの一部です
PostgreSQL におけるトランザクションとエラー処理
演習の手順
- トランザクション内で、総満期預金額が $500 thousand 未満なら
FIELD48をmature+に設定し、セーブポイントmatureplus_flag_setを設定します。 - 総満期預金額が $500 thousand 以上 $1 million 以下なら
FIELD48をmature-に設定し、セーブポイントmatureminus_flag_setを設定します。 - 総満期預金額が $100 thousand 超($1 million ではありません)なら
FIELD48をmature--に設定します。ここでは「うっかり」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--';