SET XACT_ABORT ON > db

본문 바로가기
사이트 내 전체검색

db

SET XACT_ABORT ON

페이지 정보

작성자 서방님 댓글 0건 조회 147회 작성일 06-09-13 11:20

본문

SQL Sever 에서 트랜잭션 처리시 보통 다음과 같은 패턴을 사용합니다..

CREATE PROCEDURE Proc1
AS
   -- 트랜잭션 시작
   BEGIN TRANSACTION
   -- 트랜잭션 수행
    ...
   -- 에러 체크
   If @@Error <> 0
      -- 트랜잭션 롤백
      ROLLBACK TRANSACTION
    ...
   -- 트랜잭션 커밋
   COMMIT TRANSACTION

이것은 하나의 트랜잭션수행간에는 문제가 없으나 다수의 트랜잭션문이 있을 경우 문제가 생길 수 있습니다.

INSERT ..
INSERT ..

이렇게 2개의 트랜잭션 수행을 할 경우 앞의 Insert 에서만 에러가 나구
다음 insert 에서는 에러가 나지 않았을 경우 @@error 는 0 이 되게 됩니다.
@@Error 는 직전의 에러만 체크하기 때문이죠..^^;;
그런다고 각각의 SQL 문마다 @@Error 체크 로직을 넣는것도 짱 납니다..
그럴 경우 에러가 발생할 경우 Rollback 을 자동으로 수행할 수 있게할수 없을까 생각하게 됩니다.
그럴 경우 다음과 같이  SET XACT_ABORT ON 을 사용합니다...
앞의 문장을 변경하면 다음과 됩니다.

CREATE PROCEDURE Proc1
AS   

SET XACT_ABORT ON   -- 트랜잭션 시작
   BEGIN TRANSACTION
   -- 트랜잭션 수행
    ...

COMMIT TRANSACTION

Rollback 구문이 없어도 SQL Server 가 알아서 롤백해줍니다..
모르면 고생이라죠.. 저두 몰라서 삽질했었죠..
꼭 COM+ 의 AutoComplete 같은 기능같기도 하군요. 한번 사용해보세요..^^

댓글목록

등록된 댓글이 없습니다.

Total 464건 29 페이지
게시물 검색

회원로그인

접속자집계

오늘
30
어제
302
최대
1,347
전체
155,091
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.