시작하기무료로 시작하기

세이브포인트가 격리 수준에 미치는 영향

세이브포인트를 살펴보았으니, 이제 이를 활용해 모두 같은 초기 데이터 스냅샷에서 동작해야 하는 일련의 트랜잭션을 구성해 보겠습니다. 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 
코드 편집 및 실행