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 같은 기능같기도 하군요. 한번 사용해보세요..^^
댓글목록
등록된 댓글이 없습니다.