保存点与回滚
继续思考近期将到期的定期存款规模。超过 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漏掉了。 - 回滚到我们刚设置完
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--';