시작하기무료로 시작하기

TRY...CATCH 구성에서 @@TRANCOUNT 확인하기

계정 10의 소유자가 추첨에 당첨되어 $200을 받게 되었어요. 계정 10의 current_balance에 $200을 더하는 간단한 스크립트를 준비했어요. 모든 것을 올바르게 작성했다고 생각하지만, 코드를 다시 확인하고 싶어요.

사실, 금액을 더할 때 사소한 실수를 했어요: SET current_balance = 'current_balance' + 200. 'current_balance'를 문자열로 적어서 오류가 발생해요.

작성할 스크립트는 오류가 발생하면 열린 트랜잭션이 있는지 확인한 뒤 모든 변경 사항을 롤백해야 해요. 모든 것이 정상이라면, 역시 열린 트랜잭션이 있는지 확인하고 커밋해야 해요.

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

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

강의 보기

연습 안내

  • 트랜잭션을 시작하세요.
  • 연산의 실수를 수정하세요.
  • TRY 블록 안에서 트랜잭션이 있는지 확인하고 커밋하세요.
  • CATCH 블록 안에서 트랜잭션이 있는지 확인하고 롤백하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

BEGIN TRY
	-- Begin the transaction
	___ ___;
    	-- Correct the mistake
		UPDATE accounts SET current_balance = 'current_balance' + 200
			WHERE account_id = 10;
    	-- Check if there is a transaction
		IF ___ > 0     
    		-- Commit the transaction
			___ ___;
     
	SELECT * FROM accounts
    	WHERE account_id = 10;      
END TRY
BEGIN CATCH  
    SELECT 'Rolling back the transaction'; 
    -- Check if there is a transaction
    IF ___ > 0   	
    	-- Rollback the transaction
        ___ ___;
END CATCH
코드 편집 및 실행