본 문서는 2022년 3월 17일 에 작성되었습니다.
TCL(Transactin Control Language, 트랜젝션 제어어) 은 쉽게 생각하면,
Transaction 이라는 것을 제어하는 언어라는 뜻입니다.
여기서 우리는 Transaction 이라는 개념에 대해서 짚고 넘어가야 합니다.
본 문서에서는 Transaction 에 대한 이해 와 TCL 을 포함하고 있습니다.
다음을 참고해주세요.
트랜잭션 제의어에 대해서 공부하기 전에,
트랜잭션에 대해서 짚고 넘어가도록 하겠습니다.
Transaction 은 DB 의 논리적 연산 단위입니다.
이러한 Transaction 은 SQL 문장과 완벽히 일치하지 않으며,
1개 이상의 SQL 문장을 하나의 Transaction 으로 처리하게 됩니다.
Tistory - 쩨리쩨리 / [SQL] Transaction(트랜잭션)
이러한 Transaction 을 제어하기 위한 TCL 이지만,
MySQL 이나 Oracle 을 사용하면서 TCL 을 실제로 입력한 기억은 없었습니다.
이는 기본 설정이 AUTO-COMMIT (모든 명령어를 자동으로 COMMIT) 이기 때문입니다.
AUTO-COMMIT 을 풀면,
DDL(Data Definition Language, 데이터 정의어) 은 자동으로 COMMIT 이 됩니다.
DML(Data Manipulation Language, 데이터 질의어) 은 수동으로 COMMIT 해야 합니다.
DB 가 정상 종료될 경우, 모든 SQL 문장이 자동으로 COMMIT 됩니다.
DB 가 비정상 종료될 경우, 모든 SQL 문장이 자동으로 ROLLBACK 됩니다.
TCL 을 공부하기 이전에 필요한 모든 기본 개념을 공부하였습니다.
이제 우리는 TCL 을 통해서 Transaction 을 제어(COMMIT/ROLLBACK)를 할 수 있습니다.
마지막 COMMIT 이후에 누적된 SQL 명령어들을 모두 반영합니다.
COMMIT 을 하지 않으면, 다른 사용자(DB접속자) 는 제대로된 정보를 볼 수 없습니다.
COMMIT;
마지막 COMMIT 이후에 누적된 SQL 명령어들을 모두 되돌립니다.
ROLLBACK;
별도로 SAVEPOINT 를 만들어서 Transaction 의 COMMIT/ROLLBACK 을 제어할 수 있습니다.
SAVEPOINT 이름;
COMMIT 이름;
ROLLBACK 이름;