반응형
TCL(Transaction Control Language) 이란?
TCL(Transaction Control Language) 은 트랜잭션 제어어로서
하나의 논리적 기능을 수행하는 연산자들의 집합인 트랜잭션 자체를 제어하는 구문을 말한다.
대표적으로 COMMIT, ROLLBACK, SAVEPOINT 가 존재한다.
- COMMIT : 트랜잭션 저장
- ROLLBACK : 현재 실행되고 있는 트랜잭션 취소 -> 원복
- SAVEPOINT : 트랜잭션 내 저장점을 만들어 ROLLBACK 시 SAVEPOINT 로 돌아갈 수 있다.
TCL 실습
아래의 데이터를 이용하여 실습을 진행해보자.
SELECT * FROM dbo.TBLINSASHTEST WITH(NOLOCK)
BEGIN TRAN
UPDATE dbo.TBLINSASHTEST SET name = N'도로시' WHERE num = 1001
-- 트랜잭션 자체를 COMMIT 해줄 경우
COMMIT TRAN
-- 트랜잭션 자체를 ROLLBACK 해줄 경우
ROLLBACK TRAN
COMMIT TRAN 의 결과
ROLLBACK TRAN 의 결과
SAVEPOINT
SAVEPOINT 란 트랜잭션에서 특정한 위치를 저장하고
롤백할 경우에 해당 위치까지 롤백을 하는 명령어이다.
주의할 점은 C2 로 롤백했다가 C1으로 롤백하는 과정은 지원하지 않는다는 것이다.
SAVEPOINT를 여러 개 지정했다면, 그 여러 개의 SAVEPOINT 중
하나만 선택해서 롤백 처리를 수행할 수 있는 것이다.
BEGIN TRAN
UPDATE dbo.TBLINSASHTEST SET name = N'도로시' WHERE num = 1001
SAVE TRAN TRAN_1
UPDATE dbo.TBLINSASHTEST SET name = N'김세정' WHERE num = 1001
SAVE TRAN TRAN_2
위의 두개의 SAVEPOINT 가 존재하는 트랜잭션이 있다.
TRAN_1으로 롤백을 하게 되면 1001번의 직원의 이름이 도로시로 바뀌어 있을 것이다.
ROLLBACK TRAN TRAN_1
SELECT * FROM dbo.TBLINSASHTEST WITH(NOLOCK) WHERE num = 1001
근데 여기서 중요한 점은 트랜잭션이 아직 닫히지 않았다는 것이다.
SELECT @@TRANCOUNT AS trancount
그래서 해당 작업으로 보존하고 싶다면 COMMIT TRAN을 아니면
맨 처음 상태로 돌려주고 싶다면 ROLLBACK TRAN 명령어를 실행시켜주면 된다.
반응형
'SQL Basic' 카테고리의 다른 글
[MSSQL] partition by (0) | 2022.07.06 |
---|---|
[MSSQL] window 함수 (0) | 2022.07.05 |
[MSSQL] 테이블 생성,수정,삭제 (CREATE, ALTER, DROP) (0) | 2022.05.31 |
[MSSQL] OUTER JOIN (0) | 2022.05.14 |
[MSSQL] INNER JOIN (0) | 2022.05.13 |