使用保存点进行回滚
在上一个练习的基础上,事实证明,持有超过 $6 百万 MMDA 的银行在经济低迷期维持经营的可能性是持有 $5 到 6 百万同类资产银行的两倍。这里我在示例代码中犯了一个错误,我们需要回滚到保存点以保持数据一致性。
本练习是课程的一部分
PostgreSQL 中的事务与错误处理
练习说明
- 在一个事务中,将
RCON6810(MMDA 金额)大于 $6 百万的记录的FIELD48设为'MMDA+'。 - 将
mmdaplus_flag_set设为保存点。 - 将
RCON6810(MMDA 金额)大于 $5 百万的记录的FIELD48设为'MMDA+'(这是一个错误)。 - 回退到
mmdaplus_flag_set,结束事务,并统计'MMDA+'记录数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
BEGIN;
-- Set the flag to MMDA+ where the value is greater than $6 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where RCON6810 > 6000000;
-- Set a Savepoint
___ mmdaplus_flag_set;
-- Mistakenly set the flag to MMDA+ where the value is greater than $5 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where ___ > 5000000;
-- Rollback to savepoint
___ TO ___;
COMMIT;
-- Select count of records where the flag is MMDA+
SELECT count(FIELD48) from ffiec_reci where FIELD48 = 'MMDA+';