SAVEPOINT

SAVEPOINT는 하위 트랜잭션 (중첩 트랜잭션이라고도 함)을 실현하기 위한 데이터베이스 언어 SQL 구문 중 하나이다. 트랜잭션의 특정 지점에 이름을 지정하고, 그 지점 이전에 수행 한 작업에 영향을 주지 않고 그 지점 이후에 수행한 작업을 롤백(ROLLBACK)할 수 있다. 단일 트랜잭션에서 여러 SAVEPOINT를 만들 수도 있다.

SAVEPOINT는 데이터베이스를 이용하는 응용 프로그램에서 복잡한 오류 복구 처리를 실현하는데 효과적이다. 여러 문이 갖춰진 트랜잭션 도중에 에러가 발생했을 경우, SAVEPOINT를 사용하면 전체 트랜잭션을 롤백하지 않고 오류에서 복귀할 수 있다.

SAVEPOINT의 사용 예는 다음과 같다. SAVEPOINT name에서 지점에 이름을 지정하고 ROLLBACK TO SAVEPOINT name으로 롤백하면 된다. 설정한 SAVEPOINT는 RELEASE SAVEPOINT name 또는 트랜잭션이 종료될 때 해제된다.

BEGIN;
  INSERT INTO tbl VALUES (1);
SAVEPOINT savepoint_example;
  INSERT INTO tbl VALUES (2);
ROLLBACK TO SAVEPOINT savepoint_example;
  INSERT INTO tbl VALUES (3);
COMMIT;
-- 1과 3이 삽입된 형태가 된다.

SAVEPOINT는 표준 SQL에도 채용하고 있으며, PostgreSQL, Oracle Database, 마이크로소프트 SQL 서버, MySQL, DB2, SQLite(3.6.8 이상), 파이어버드, Informix Dynamic Server (11.50xC3 이상) 등 많은 관계 데이터베이스 관리 시스템이 지원하고 있다.

SQL 키워드
데이터베이스 관리 시스템
데이터 관리
트랜잭션 처리