정의
- Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법
- 이는 DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있음
- SELECT에는 트랜잭션을 사용할 이유가 없음
- BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용
- ROLLBACK(Begin 다음에 실행됐던 sql들이 무효화 됨)
사용방법
- 은행 계좌 이체가 아주 좋은 예
- 계좌 이체 : 인출과 입금의 두 과정으로 이루어짐
- 이 두 과정은 동시에 성공하던지 실패해야 함 ⇒ Atomic 하다는 의미
BEGIN; -- START TRANSACTION (동일한 명령) A의 계좌로부터 인출; B의 계좌로 입금; END; -- COMMIT (동일한 명령)
트랜잭션 커밋 모드 : autocommit
autocommit = True
- 모든 레코드 수정/삭제/추가 작업이 기본적으로 바로 데이터베이스에 쓰여짐. 이를 커밋 된다고 함
- 만일 특정 작업을 트랜잭션으로 묶고 싶다면 BEGIN과 END(COMMIT) / ROLLBACK으로 처리
autocommit = False
- 모든 레코드 수정/삭제/추가 작업이 COMMIT이 호출될 때 까지 커밋 되지 않음
- 즉 명시적으로 커밋을 해야 함
- ROLLBACK이 호출되면 앞서 작업들이 무시됨
확인, 설정방법
SET autocommit=0 or 1;
SHOW VARIABLES LIKE 'AUTOCOMMIT';
— MySQL의 경우.