Programming/SQL

[SQL] 트랜잭션 제어문 (TCL) / 트랜잭션 모드

reeme 2020. 12. 17. 22:54

트랜잭션 제어문 (TCL)

COMMIT

-- 트랜잭션의 마지막 명령어가 수행되었음을 나타냄

-- 트랜잭션에 의한 변경을 확정

-- COMMIT 된 트랜잭션은 철회가 불가능함

-- COMMIT 명령문 실행하기 전에 하나의 트랜잭션 변경한 결과를 다른

-- 트랜잭션에서 접근할 수 없도록 방지하여 일관성을 유지함

ROLLBACK

-- 트랜잭션의 변경을 취소하고 트랜잭션 종료

SAVEPOINT

-- 현재 트랜잭션에서 ROLLBACK 시킬 위치 지정

-- 대규모 트랜잭션 ( 복수개의 명령어들로 이루진 트랜잭션 ) 에서 오류 발생이

전체 트랜잭션을 취소 시키는 것이 큰 부담이 될 수 있음

-- 실패한 일정부분만 취소 시키도록 함


트랜잭션 모드

1. 자동 커밋 트랜잭션

-- 하나의 명령문이 하나의 트랙잭션이 됨

-- MS-SQL 에서 기본 모드임

2. 명시적 트랜잭션

-- 명시적으로 사용자가 트랙잭션을 정의하는 형태

-- BEGIN TRAN ~ COMMIT TRAN( 또는 ROLLBACK TRAN) 으로 이루어짐

3. 묵시적 트랜잭션

-- 자동 커밋 트랜잭션의 반대되는 개념

-- 사용자가 COMMIT TRAN( 또는 ROLLBACK TRAN) 을 입력하기 전까지 복수개의 명령문을 하나의 트랜잭션으로 간주함

-- BEGIN TRAN 이 필요 없음

-- 묵시적 트랜잭션의 설정

 

SET IMPLICIT TRANSACTIONS {ON|OFF}

-- 트랜잭션 종료마다 사용자가 반드시 COMMIT / ROLLBAK 을 명령문을 실행시켜야 함

-- 고급 사용자가 아닌 이상 가능한 사용하지 않는 것이 좋음


트랜잭션 제어문 (TCL) 활용

간단한 트랜잭션 철회

오류발생에 따른 트랜잭션 철회

-- 트랜잭션을 구성하는 명령문들 중에서 오류가 발생되면 트랜잭션을 철회하고 그렇지 않으면 완료하는 것이 필요

SAVEPOINT 를 이용한 트랜잭션 부분 철회

-- 트랜잭션 내에서 SAVEPOINT 의 지정

SAVE TRAN 저장점명

-- 저장점 위치로 취소

ROLLBACK TRAN 저장점명