데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
BEGIN TRY
BEGIN TRAN
-- 작업수행
COMMIT TRAN -- 정상수행시 커밋
END TRY
BEGIN CATCH -- Error Spotted
SELECT 'SysMsg', ERROR_MESSAGE(), '' -- 에러메시지 출력
IF XACT_STATE() = -1 BEGIN -- 커밋 불가 시
ROLLBACK TRAN -- 롤백
SELECT 'SysMsg', 'Rollback Processed', '' -- 메시지 출력
END
ELSE IF XACT_STATE() = 1 BEGIN -- 커밋 가능 시
COMMIT TRAN -- 커밋
SELECT 'SysMsg', 'Commit Accomplished', '' -- 메시지 출력
END
ELSE IF XACT_STATE() <> 0 BEGIN -- 커밋 불가 시
ROLLBACK TRAN -- 롤백
SELECT 'SysMsg', 'Rollback Processed', '' -- 메시지 출력
END
ELSE BEGIN -- 트랜잭션이 없을 시
SELECT 'SysMsg', 'No Transaction Found', '' -- 메시지 출력
END
END CATCH
굵게 표시한 부분이 이해가 되질 않네요...
1 : 활성 O
0 : 활성 X
-1 : 활성 O 에러 O
불필요한 조건절로 보입니다. 삭제 Go
------------------------------------------------------------------------------------
ELSE IF XACT_STATE() <> 0 BEGIN -- 커밋 불가 시
ROLLBACK TRAN -- 롤백
SELECT 'SysMsg', 'Rollback Processed', '' -- 메시지 출력
END
---------------------------------------------------------------------------------------