开始使用免费开始使用

保存点对隔离级别的影响

您已经了解了保存点,接下来用它们来设置一系列事务,这些事务都需要基于同一个数据快照运行。REPEATABLE READ 是一种隔离级别,它让事务中的每条语句都看到与第一条语句相同的数据,而不是前一条语句执行后的结果数据。

最近,FFEIC 允许在数据集中逐步削减境外存款(字段 RCON2203,单位为千美元)。新的削减比例为:超过 $1 billion 的削减 35%,超过 $500 million 的削减 25%,超过 $300 million 的削减 13%。通过合理排序这些语句可以避免对同一数据多次削减。然而,在 REPEATABLE READ 下,各语句看到的都是调整前的数据。

本练习是课程的一部分

PostgreSQL 中的事务与错误处理

查看课程

练习说明

  • 启动一个 REPEATABLE READ 事务。
  • 对于 RCON2203:若超过 $1 billion 则减少 35%,若超过 $500 million 则减少 25%,若超过 $300 million 则减少 13%,并在每一步后设置一个 SAVEPOINT
  • 关闭事务。
  • 汇总 RCON2203 字段的总计。

交互式实操练习

通过完成这段示例代码来试试这个练习。

-- Create a new transaction with a repeatable read isolation level
___ TRANSACTION ISOLATION LEVEL ___ ___;

-- Update records with a 35% reduction if greater than 1000000000
UPDATE ffiec_reci 
SET ___ = CAST(___ AS FLOAT) * .65 
WHERE CAST(RCON2203 AS FLOAT) > 1000000000;

___ million;

-- Update records with a 25% reduction if greater than 500000000
UPDATE ___ 
___ ___ = CAST(___ AS FLOAT) * .75 
___ CAST(RCON2203 AS FLOAT) ___ 500000000;

SAVEPOINT five_hundred;

-- Update records with a 13% reduction if greater than 300000000
___ ffiec_reci 
___ ___ = CAST(___ AS FLOAT) * .87 
___ CAST(___ AS FLOAT) ___ 300000000;

SAVEPOINT three_hundred;

-- Commit the transaction
___;

-- Select SUM the RCON2203 field
SELECT ___(CAST(RCON2203 AS FLOAT)) 
FROM ffiec_reci 
编辑并运行代码