Transaction Control Language

TCL은 명시적 트랜잭션의 변경을 확정하거나 되돌리는 언어다

여러 DML 작업을 하나의 작업 단위로 묶고, 성공하면 COMMIT으로 확정하고 실패하면 ROLLBACK으로 되돌립니다. SAVEPOINT는 전체 취소 대신 특정 지점까지만 되돌릴 때 쓰입니다.

BEGIN 트랜잭션 시작

여러 변경을 하나의 논리적 작업 단위로 묶는다.

DML INSERT · UPDATE · DELETE

아직 해당 트랜잭션 안에서 확정 전인 변경이 쌓인다.

SAVEPOINT 중간 복귀 지점

일부 작업만 되돌릴 수 있도록 이름 붙은 지점을 만든다.

END 확정 또는 취소

성공하면 COMMIT, 실패하면 ROLLBACK을 선택한다.

COMMIT 해당 트랜잭션의 변경을 확정

커밋된 변경은 장애 복구 시에도 유지되어야 하는 결과가 된다.

BEGIN;
UPDATE accounts SET balance = balance - 10000 WHERE id = 1;
UPDATE accounts SET balance = balance + 10000 WHERE id = 2;
COMMIT;
ROLLBACK TO 저장점 이후 변경만 되돌림

전체 취소가 필요하면 ROLLBACK, 일부 복귀가 필요하면 저장점을 사용한다.

BEGIN;
SAVEPOINT before_price;
UPDATE products SET price = price * 1.1;
ROLLBACK TO SAVEPOINT before_price;
COMMIT;
단위 함께 성공하거나 함께 실패해야 한다

입금과 출금처럼 쪼개지면 안 되는 작업을 하나로 묶는다.

범위 문법과 동작은 DBMS 설정에 따라 다를 수 있다

BEGIN 이름, 자동 커밋, DDL 처리 방식은 제품별 차이를 확인해야 한다.

복구 ROLLBACK은 중간 상태를 남기지 않게 돕는다

오류가 생겼을 때 일관성이 깨진 상태가 확정되지 않도록 막는다.