반응형
해당 포스팅은 MSSQL을 기준으로 작성하였습니다. 오라클과는 다를 수 있습니다.
트랜잭션에 대한 자세한 설명의 아래의 포스팅을 참고해주세요.
https://luvris2.tistory.com/387
SET IMPLICIT_TRANSACTIONS란?
- 트랜잭션의 옵션
- BEGIN TRAN을 붙이지 않아도 자동으로 커밋되지 않고 사용자가 커밋을해야만 커밋이 됨
- 즉, 시스템 트랜잭션의 커밋을 사용자가 컨트롤 할 수 있음
- 해당 옵션을 사용 할 경우 사용자가 꼭 커밋 또는 롤백을 해야만 완전하게 트랜잭션이 종료
- 만약 커밋 또는 롤백을 하지 않으면 시스템에서는 해당 데이터에 대한 잠금이 발생
- 예시) 실수로 테이블의 데이터를 모두 삭제했을 경우
- 보통은 시스템 트랜잭션이 처리하여 데이터는 되돌릴 수 없음
- 해당 옵션을 사용하면 데이터를 되돌릴 수 있음
- 이는 사용자가 실수를 할 경우에 유용하게 사용될 수 있음
옵션 설정
- 설정 구문
- on : 커밋 또는 롤백을 해야만 모든 수행 결과를 저장
- off : 시스템 트랜잭션이 자동으로 커밋
set implicit_transactions on
-- set implicit_transactions off
- 옵션 설정 확인 명령어
- ON : Set Option에 해당 옵션 존재, 값이 'SET'으로 되어있음
- OFF : 해당 Set Option 존재하지 않음
DBCC USEROPTIONS
사용 예시
테이블의 모든 데이터를 삭제 후 롤백해보기
- 시스템 자동 커밋 해제 설정
set implicit_transactions on
- 테이블 조회
select * from MyPET
- 테이블 삭제
delete from MyPet
- 테이블 삭제 후 조회
select * from MyPET
- 롤백
rollback tran
- 롤백 후 테이블 조회
select * from MyPet
반응형