트랜잭션을 커밋할지 롤백할지 결정하기
여러분이 근무하는 은행에서는 잔액이 $5,000 미만인 계좌에 $100을 지급하기로 했어요. 다만, 은행장은 $5,000 미만인 계좌가 200개를 넘지 않을 때에만 지급하길 원합니다.
여러 방법 중, 트랜잭션을 시작한 뒤 잔액이 $5,000 미만인 모든 계좌를 업데이트하는 스크립트를 준비하려고 합니다. 그다음 @@ROWCOUNT 함수를 사용해 업데이트로 영향 받은 행의 개수를 확인해요. 이 수가 200보다 크면 트랜잭션을 롤백하고, 그렇지 않으면 커밋합니다.
어떻게 스크립트를 작성하면 될까요?
이 연습은 강의의 일부입니다
SQL Server에서의 트랜잭션과 오류 처리
연습 안내
- 트랜잭션을 시작하세요.
- 영향 받은 행의 개수가 200보다 큰지 확인하세요.
- 영향 받은 행의 개수가 200을 초과하면 트랜잭션을 롤백하세요.
- 영향 받은 행의 개수가 200 이하이면 트랜잭션을 커밋하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END