SQL · PostgreSQL · 데이터베이스
트랜잭션으로 변경 묶기
여러 데이터 변경을 한 단위로 다루고 COMMIT과 ROLLBACK의 차이를 확인합니다.
무료 공개 · 최근 수정
어떤 개념인가요?
트랜잭션은 여러 작업을 하나의 처리 단위로 묶습니다. PostgreSQL에서는 BEGIN으로 시작한 작업들을 COMMIT으로 확정하거나 ROLLBACK으로 취소할 수 있습니다. 여러 단계 중 일부만 반영되는 상황을 피하는 것이 핵심입니다. PostgreSQL 공식 튜토리얼
취소되는 변경 확인하기
다음 예시는 PostgreSQL의 같은 세션에서 실행합니다. 임시 테이블만 사용합니다.
CREATE TEMP TABLE wiki_practice (topic text);
BEGIN;
INSERT INTO wiki_practice VALUES ('HTTP');
INSERT INTO wiki_practice VALUES ('Git');
ROLLBACK;
SELECT count(*) FROM wiki_practice;
-- 0두 행을 넣었지만 취소했으므로 결과는 0입니다. 새로 트랜잭션을 시작해 행을 넣고 COMMIT한 뒤 개수를 비교해 보세요.
함께 생각할 점
관련된 변경을 모두 묶어야 의도한 처리 단위가 됩니다. 데이터베이스 밖에서 이미 전송한 이메일이나 HTTP 요청까지 ROLLBACK이 되돌려 주는 것은 아닙니다. 외부 시스템과 함께 작동하는 기능은 실패 시 처리 방법도 따로 설계해야 합니다.
동시에 실행되는 트랜잭션이 서로의 변경을 어떻게 관찰하는지는 격리 수준과도 관련됩니다. 입문 단계에서는 확정과 취소의 경계를 먼저 확인한 뒤 동시성으로 범위를 넓혀 보세요.
참고 문서
설명이 어렵거나 잘못된 부분을 발견하셨나요?
문서 수정 의견 보내기