본문 바로가기
DataBase/MS-SQL

TRANSACTION[트랜잭션] - 롤백 처리에 대해서

by JKUN Dev. Jkun 2013. 5. 29.

1. 글로벌 변수 @@ERROR 를 이용한

  BEGIN TRAN

      INSERT INTO TEST1 (T1, T2, T3) VALUES ('AA','BB','CC')

      INSERT INTO TEST2 (T1, T2, T3) VALUES ('AA','BB','CC')

      INSERT INTO TEST3 (T1, T2, T3) VALUES ('AA','BB','CC'

    IF (@@ERROR <> 0)

      COMMIT

   ELSE

      ROLLBACK

  ROLLBACK TRAN

 

2. TRY / CATCH & EXCEPTION 을 이용한

  BEGIN TRY

   BEGIN TRAN

      INSERT INTO TEST1 (T1, T2, T3) VALUES ('AA','BB','CC')

      INSERT INTO TEST2 (T1, T2, T3) VALUES ('AA','BB','CC')

      INSERT INTO TEST3 (T1, T2, T3) VALUES ('AA','BB','CC') 

   COMMIT TRAN

  END TRY

  BEGIN CATCH

    PRINT '오류번호는 ' + CAST (ERROR_NUMBER() AS VARCHAR)

    PRINT '오류심각도는 ' + CAST (ERROR_SEVERITY() AS VARCHAR)

    PRINT '오류상태번호는 ' + CAST (ERROR_STATE() AS VARCHAR)

    PRINT '오류발생프로시저명은 ' + CAST (ERROR_PROCEDURE() AS VARCHAR)

    PRINT '오류발생구문의라인은 ' + CAST (ERROR_LINE() AS VARCHAR)

  END CATCH;

 

3. SET XACT_ABORT ON  를 이용한

   SET XACT_ABORT ON -- 오류시 모두 롤백
   BEGIN TRAN
      INSERT INTO TEST1 (T1, T2, T3) VALUES ('AA','BB','CC')

      INSERT INTO TEST2 (T1, T2, T3) VALUES ('AA','BB','CC')

      INSERT INTO TEST3 (T1, T2, T3) VALUES ('AA','BB','CC') 
   COMMIT TRAN
   SET XACT_ABORT OFF

 

그 외에 암시적인 트랜잭션도 있는데, 나도 이 카페 를 보고 찾아가서 테스트를 해본 것이다.

좀 더 세부적인 무결성을 원할때는 3번째 방법에 대해서는 다시 한번 고려를 권장하고 있었다.

반드시 3개의 기능을 테스트 하여, 적재적소를 찾아야 겠다.

제일 좋은 테스트는.. 아무리 생각해봐도 대용량데이터 예제 삼아 날려보는게.ㅋㅋ

'DataBase > MS-SQL' 카테고리의 다른 글

자주 쓰이는 시스템 뷰  (0) 2013.05.29
MSSQL [@@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT]  (0) 2013.05.29
TRANSACTION[트랜잭션] - 롤백 처리에 대해서  (0) 2013.05.29
SQL MD5 함수  (0) 2013.05.29
OPENROWSET  (0) 2013.05.29
CHARINDEX 를 이용한 문자열 필터링  (0) 2013.05.29

댓글0