TCL이 제어하는 것

트랜잭션의 경계는 열고, 저장점은 남기고, 끝에서는 확정 또는 복구를 고릅니다

TCL은 데이터를 직접 바꾸는 언어라기보다, 여러 SQL 변경을 하나의 작업 단위로 묶어 어느 범위까지 인정할지 정하는 제어 언어입니다.

BEGIN

트랜잭션 경계 열기

이 시점부터 실행되는 여러 SQL이 같은 트랜잭션에 묶입니다. 작업의 시작점이 여기서 정해집니다.

SAVEPOINT

중간 복구 지점 남기기

복잡한 작업 도중 기준점을 찍어 두면, 오류가 나도 전체가 아니라 저장점 이후만 되돌릴 수 있습니다.

공통 중심

트랜잭션 안에서는 여러 변경이 같은 운명을 가집니다

INSERT, UPDATE, DELETE 같은 SQL이 따로 실행돼도, 트랜잭션 안에 있으면 마지막 결정 전까지는 아직 최종 반영된 상태가 아닙니다.

같은 묶음으로 관리되는 SQL 예시
UPDATE 재고 차감 INSERT 주문 생성 UPDATE 포인트 차감
SAVEPOINT S1

중간 저장점은 "여기까지는 괜찮다"는 복구 기준입니다. 이후 단계만 취소할 수 있게 범위를 잘라 줍니다.

종료 시 결정

끝에서는 둘 중 하나를 선택합니다

COMMIT 변경을 영구 반영

트랜잭션 안의 작업 전체를 확정해 다른 세션에서도 같은 결과를 보게 합니다.

ROLLBACK 변경을 취소

오류가 나면 전체를 되돌리거나, 저장점이 있으면 그 지점까지만 복구할 수 있습니다.

핵심 읽기

TCL의 초점은 "무슨 데이터를 바꾸나"가 아니라 "변경을 어디까지 인정할까"입니다. 그래서 시작점, 저장점, 종료 방식을 함께 봐야 트랜잭션 제어가 이해됩니다.