START TRANSACTION — 트랜잭션 블록 시작
START TRANSACTION — 트랜잭션 블록 시작
트랜잭션을 여러 SQL 문을 하나의 원자적 작업 단위로 묶어 실행하고 싶을 때, 그 블록을 여는 명령이에요. BEGIN과 동일한 역할을 해요.
출처: PostgreSQL 문서
본문
Synopsis
START TRANSACTION [ transaction_mode [, ...] ]
where transaction_mode is one of:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
설명 (Description)
이 명령은 새로운 트랜잭션 블록을 시작해요. 격리 수준(isolation level), 읽기/쓰기 모드, 또는 지연 가능(deferrable) 모드가 지정되면, 새 트랜잭션은 SET TRANSACTION을 실행한 것처럼 해당 특성을 갖게 돼요. 이는 BEGIN 명령과 동일해요.
매개변수 (Parameters)
이 문의 매개변수 의미에 대한 내용은 SET TRANSACTION을 참고하면 돼요.
호환성 (Compatibility)
표준에서는 트랜잭션 블록을 시작하기 위해 START TRANSACTION을 발행할 필요가 없어요. 어떤 SQL 명령이든 암시적으로 블록을 시작하니까요. PostgreSQL의 동작은 START TRANSACTION(또는 BEGIN)을 따르지 않는 각 명령 뒤에 암시적으로 COMMIT을 발행하는 것으로 볼 수 있고, 그래서 흔히 "autocommit"이라고 불러요. 다른 관계형 데이터베이스 시스템은 편의 기능으로 autocommit 기능을 제공할 수도 있어요.
DEFERRABLE이라는 transaction_mode는 PostgreSQL 언어 확장이에요.
SQL 표준은 연속된 transaction_mode 사이에 쉼표를 요구하지만, PostgreSQL은 역사적인 이유로 쉼표를 생략하는 것을 허용해요.
SET TRANSACTION의 호환성 절도 함께 참고하면 돼요.
더 알아보기 (Learn more)
- 문 하나로 트랜잭션 특성을 설정하는
SET TRANSACTION명령이 있어요. - 트랜잭션을 끝내는
COMMIT과 되돌리는ROLLBACK명령을 같이 알아두면 유용해요. BEGIN은 같은 기능을 제공하는 축약형이에요.