XACT_ABORT와 THROW
여러분이 근무하는 은행의 가장 자산이 많은 고객들이 비영리 단체에 본인의 current_balance 중 0.01%를 기부하기로 했습니다. 이제 고객 계좌를 업데이트하는 스크립트를 준비해야 하는데, current_balance가 $5,000,000을 초과하는 계좌에만 적용해야 합니다. 은행장은 자산가 고객이 최소 10명 이상이 되지 않으면 이 작업을 진행하지 말라고 합니다. 더 많은 고객을 먼저 인터뷰하고 싶기 때문입니다.
여러분은 여러 방법 중 XACT_ABORT와 THROW를 함께 사용하기로 했습니다. 이렇게 하면 영향받은 행 수가 10 이하일 경우 오류를 발생시켜 트랜잭션이 롤백되도록 할 수 있습니다.
이 연습은 강의의 일부입니다
SQL Server에서의 트랜잭션과 오류 처리
연습 안내
XACT_ABORT를 올바른 설정으로 사용하세요.- 트랜잭션을 시작하세요.
- 영향받은 행 수가 10 이하이면, 번호 55000으로
THROW문을 사용해 오류를 발생시키세요. - 영향받은 행 수가 10보다 많으면 트랜잭션을 COMMIT 하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
WHERE current_balance > 5000000;
IF @@ROWCOUNT <= 10
-- Throw the error
___ ___, 'Not enough wealthy customers!', 1;
ELSE
-- Commit the transaction
___ ___;