Checked : MS-SQL 2005.
① 옛날 방식.
SET XACT_ABORT ON;
BEGIN TRANSACTION;
-- BEGIN DISTRIBUTED TRANSACTION; -- 분산 트랜잭션 구현시 사용.
------------------------------
-- DML 쿼리문 작성 부분.
------------------------------
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION;
END
ELSE
BEGIN
COMMIT TRANSACTION;
END;
==============================
② 요즘 방식.
SET XACT_ABORT ON;
BEGIN TRANSACTION;
-- BEGIN DISTRIBUTED TRANSACTION; -- 분산 트랜잭션 구현시 사용.
BEGIN TRY
------------------------------
-- DML 쿼리문 작성 부분.
------------------------------
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS 'ErrorNumber'
, ERROR_SEVERITY() AS 'ErrorSeverity'
, ERROR_STATE() AS 'ErrorState'
, ERROR_PROCEDURE() AS 'ErrorProcedure'
, ERROR_LINE() AS 'ErrorLine'
, ERROR_MESSAGE() AS 'ErrorMessage';
IF (@@TRANCOUNT > 0)
ROLLBACK TRANSACTION;
END CATCH;
IF (@@TRANCOUNT > 0)
COMMIT TRANSACTION;
GO
'MS-SQL' 카테고리의 다른 글
오류 1222. 잠금 요청 제한시간이 초과되었습니다. (0) | 2014.05.28 |
---|---|
데이터베이스 메일 보내기 오류 (0) | 2014.05.27 |
주차 계산 함수 (ISO.8601 기준) (0) | 2013.12.16 |
WITH (CTE : Common Table Expression) 사용 예제 (0) | 2013.12.10 |
컬럼(COLUMN) 정보 조회 (0) | 2013.12.10 |