SAVEPOINT 문
START TRANSACTION 문으로 트랜잭션을 선언해 시작하면 COMMIT이나 ROLLBACK 문을 만날 때까지 작성한 모든 문장은 하나의 트랜잭션으로 묶여 한배를 탄 운명에 처해집니다. 가령 트랜잭션 안에서 DELETE, INSERT, UPDATE 3개의 문장을 사용했다면 세 문장 때문에 변경된 데이터는 COMMIT, ROLLBACK 문의 사용 여부에 따라 모두 적용되거나 모두 취소됩니다.
그런데 이 중에서 DELETE, INSERT 문이 처리한 내역은 테이블에 반영(커밋)하고 마지막 UPDATE 문이 처리한 내역만 취소할 수도 있습니다. SAVEPOINT 문을 사용하는 방법인데, SAVEPOINT는 트랜잭션 안에서 특정 지점을 정해 해당 지점부터 수행된 DML 문장이 처리한 작업을 모두 취소합니다.
SAVEPOINT 문의 구문은 다음과 같습니다.
구문 10-11
SAVEPOINT 식별자;
INSERT(또는 UPDATE/DELETE) 문
ROLLBACK TO SAVEPOINT 식별자;
START TRANSACTION 문을 실행한 후 특정 지점에 SAVEPOINT 식별자 형태의 문장을 사용합니다. 그러고 나서 DML 문장을 실행하고 마지막으로 ROLLBACK TO SAVEPOINT 식별자 문장을 실행하면 해당 식별자 위치로 가서 그 이후 실행된 문장이 처리한 작업을 모두 취소합니다. 여기서 식별자는 해당 지점의 이름 또는 지표 역할을 합니다.