세이브포인트가 격리 수준에 미치는 영향
세이브포인트를 살펴보았으니, 이제 이를 활용해 모두 같은 초기 데이터 스냅샷에서 동작해야 하는 일련의 트랜잭션을 구성해 보겠습니다. REPEATABLE READ는 트랜잭션 내부의 각 문장이 바로 이전 문장의 결과가 아니라, 첫 번째 문장이 참조한 것과 동일한 데이터를 보도록 해 주는 격리 수준입니다.
최근 FFEIC은 데이터셋에서 해외 예금(필드 RCON2203, 단위: 천 달러)에 대해 단계적 감축을 허용했습니다. 새로운 감축률은 10억 달러 초과 35%, 5억 달러 초과 25%, 3억 달러 초과 13%입니다. 명령문의 순서를 조정해 중복 감축을 피할 수도 있지만, REPEATABLE READ에서는 각 문장이 조정 전의 데이터를 보게 됩니다.
이 연습은 강의의 일부입니다
PostgreSQL에서의 트랜잭션과 오류 처리
연습 안내
REPEATABLE READ트랜잭션을 시작하세요.RCON2203가 10억 달러를 초과하면 35%, 5억 달러를 초과하면 25%, 3억 달러를 초과하면 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