세이브포인트로 롤백하기
이전 연습 문제를 이어서, MMDA가 600만 달러를 초과하는 은행은 같은 자산군에서 500만~600만 달러 사이인 은행보다 경기 침체 시 생존할 확률이 두 배 더 높은 것으로 나타났어요. 여기 제공된 샘플 코드에 실수가 있어 데이터 무결성을 지키려면 세이브포인트로 롤백해야 해요.
이 연습은 강의의 일부입니다
PostgreSQL에서의 트랜잭션과 오류 처리
연습 안내
- 트랜잭션 안에서
RCON6810(MMDA 금액)이 600만 달러보다 큰 경우FIELD48을'MMDA+'로 설정하세요. mmdaplus_flag_set을 세이브포인트로 설정하세요.RCON6810(MMDA 금액)이 500만 달러보다 큰 경우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+';