데이터베이스/MSSQL
트랜잭션(Transaction)
인공지능싱글톤
2023. 6. 15. 14:35
기본 사용법
USE [데이터베이스 이름] -- 사용할 데이터베이스
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/**********************************************************
Author: 만든이
Created: 생성 날짜
Editor:
Modified:
Description: 설명
(실행 예시문)
exec [dbo].[프로시져 이름]
**********************************************************/
CREATE PROCEDURE [dbo].[프로시져 이름]
AS
BEGIN
SET NOCOUNT ON; -- 몇개의 행이 영향을 받았는지 확인하는 문구 제거 (처리량이 많을경우 사용)
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; -- 프로시져의 잠금 레벨 READ UNCOMMITTED
-- 트랜잭션 시작
BEGIN TRAN
-- sql 작성
-- 트랜잭션의 경우 INSERT나 DELETE가 2개 이상일경우 사용하면 좋다
-- 트랜잭션 완료
IF @@ERROR < 0 BEGIN
-- 오류 발생했을때
ROLLBACK TRAN -- 복구
END
ELSE BEGIN
-- 오류 없을때
COMMIT TRAN -- 데이터베이스 영구 반영
END
END
GO
예시
USE [MyDataBase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/**********************************************************
Author: 홍길동
Created: 2023-06-15
Editor:
Modified:
Description: 게시글 및 댓글 삭제
exec [dbo].[up_Delete_Board] '84bc1c2db56140b39e35b040e6856457'
**********************************************************/
CREATE PROCEDURE [dbo].[up_Delete_Board](
@strBoardID uniqueidentifier -- GUID형식 데이터
)
AS
BEGIN
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- 트랜잭션 시작
BEGIN TRAN
DELETE FROM [Board] where BoardID = @strBoardID
DELETE FROM [BoardComment] where BoardID = @strBoardID
-- 트랜잭션 완료
IF @@ERROR < 0 BEGIN
ROLLBACK TRAN
END
ELSE BEGIN
COMMIT TRAN
END
END