开始使用免费开始使用

保存点与回滚

继续思考近期将到期的定期存款规模。超过 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--';
编辑并运行代码