6. 정리
트랜잭션은 여러 문장을 하나의 성공 또는 실패 단위로 묶는 장치입니다. COMMIT 은 확정, ROLLBACK 은 취소이고, 확정한 뒤에는 ROLLBACK 으로 돌릴 수 없습니다. 이체처럼 함께 바뀌어야 하는 문장은 반드시 한 트랜잭션에 넣습니다.
시작과 자동 커밋은 DB마다 다릅니다. Oracle 은 첫 DML 에서 암묵 시작하고 자동 커밋은 도구가 정합니다(SQL*Plus 는 끔, JDBC 는 켬). MySQL 은 autocommit=1 이 기본이고 START TRANSACTION 또는 BEGIN 으로 묶습니다. MSSQL 도 자동 커밋이 기본이고 BEGIN TRAN 으로 묶습니다.
문장이 실패하면 세 DB 모두 그 문장만 취소되고 트랜잭션은 열려 있어 애플리케이션이 ROLLBACK 해야 합니다. MSSQL 은 XACT_ABORT ON 이면 대부분의 오류에서 전체를 롤백합니다. Oracle·MySQL 의 DDL 은 암묵적 커밋이고 MSSQL 은 트랜잭션 안에서 롤백할 수 있습니다.
SAVEPOINT 는 Oracle·MySQL 에서 SAVEPOINT s 와 ROLLBACK TO [SAVEPOINT] s, MSSQL 에서 SAVE TRAN s 와 ROLLBACK TRAN s 입니다. 표식으로 되돌려도 트랜잭션은 끝나지 않습니다.
기본 격리 수준은 Oracle·Tibero·MSSQL 이 READ COMMITTED, MySQL InnoDB 가 REPEATABLE READ 입니다. 커밋하지 않은 세션은 잠금을 오래 쥐므로 트랜잭션은 짧게 씁니다. 락 대기와 데드락은 대용량·배치 카테고리에서 다룹니다. 다음 레슨은 채번과 순번 관리로, 번호를 겹치지 않게 발급하는 방법을 다룹니다.