MSSQL - SET IMPLICIT_TRANSACTIONS 사용법 (시스템 트랜잭션 제어하기)

320x100
반응형

 

해당 포스팅은 MSSQL을 기준으로 작성하였습니다. 오라클과는 다를 수 있습니다.

트랜잭션에 대한 자세한 설명의 아래의 포스팅을 참고해주세요.

https://luvris2.tistory.com/387

 

MSSQL - 트랜잭션의 개념 이해와 종류, 사용 방법

트랜잭션이란? (Transaction) 데이터베이스 관리 시스템에서 상호작용의 단위 하나의 논리적 작업 단위로 수행되는 일련의 작업 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는

luvris2.tistory.com


SET IMPLICIT_TRANSACTIONS란?

  • 트랜잭션의 옵션
  • BEGIN TRAN을 붙이지 않아도 자동으로 커밋되지 않고 사용자가 커밋을해야만 커밋이 됨
  • 즉, 시스템 트랜잭션의 커밋을 사용자가 컨트롤 할 수 있음
  • 해당 옵션을 사용 할 경우 사용자가 꼭 커밋 또는 롤백을 해야만 완전하게 트랜잭션이 종료
  • 만약 커밋 또는 롤백을 하지 않으면 시스템에서는 해당 데이터에 대한 잠금이 발생
  • 예시) 실수로 테이블의 데이터를 모두 삭제했을 경우
    • 보통은 시스템 트랜잭션이 처리하여 데이터는 되돌릴 수 없음
    • 해당 옵션을 사용하면 데이터를 되돌릴 수 있음
      • 이는 사용자가 실수를 할 경우에 유용하게 사용될 수 있음

옵션 설정

  • 설정 구문
    • on : 커밋 또는 롤백을 해야만 모든 수행 결과를 저장
    • off : 시스템 트랜잭션이 자동으로 커밋
set implicit_transactions on
-- set implicit_transactions off

 

  • 옵션 설정 확인 명령어
    • ON : Set Option에 해당 옵션 존재, 값이 'SET'으로 되어있음
    • OFF : 해당 Set Option 존재하지 않음
DBCC USEROPTIONS

< implicit_transactions on 설정 >


사용 예시

테이블의 모든 데이터를 삭제 후 롤백해보기

  • 시스템 자동 커밋 해제 설정
set implicit_transactions on

 

  • 테이블 조회
select * from MyPET

 

  • 테이블 삭제
delete from MyPet

 

  • 테이블 삭제 후 조회
select * from MyPET

 

  • 롤백
rollback tran

 

  • 롤백 후 테이블 조회
select * from MyPet

320x100
반응형