시작하기무료로 시작하기

세이브포인트와 롤백

가까운 미래에 만기가 도래하는 정기예금 규모를 계속 살펴보려고 해요. 25만 달러를 초과하는 예금이 2008년 시장에서 나타난 결과에 가장 큰 영향을 미쳤습니다.

RCONHK12(>=250k)에는 향후 3개월 안에 만기가 도래하는 금액이, RCONHK13(>=250k)에는 3~12개월 사이에 만기 도래하는 금액이 저장됩니다. 이 값이 100만 달러를 초과하면 은행에 자금 부족이 생길 수 있어요. 보통 은행의 큰 고객들이라 다른 자산도 함께 인출할 수 있기 때문입니다. 반대로 50만 달러 미만이면 긍정적인 요인으로 볼 수 있어요.

제가 50만 달러를 초과하는 항목에 잘못된 값을 설정하는 바람에 코드에 몇 가지 실수가 생겼네요!

이 연습은 강의의 일부입니다

PostgreSQL에서의 트랜잭션과 오류 처리

강의 보기

연습 안내

  • 트랜잭션 내부에서 총 만기 도래 예금이 50만 달러 미만이면 FIELD48mature+로 설정하고, 세이브포인트 matureplus_flag_set을 설정하세요.
  • 총 만기 도래 예금이 50만 달러 이상 100만 달러 이하이면 FIELD48mature-로 설정한 뒤, 세이브포인트 matureminus_flag_set을 설정하세요.
  • 총 만기 도래 예금이 10만 달러를 초과하면(100만 달러가 아니라) FIELD48mature--로 설정하세요. 여기서는 0을 하나 "실수로" 빼먹는 상황입니다.
  • mature- 레코드를 설정한 직후 시점으로 되돌리기(UNDO) 한 다음, 예금 만기 일정이 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--';
코드 편집 및 실행