의견.png

세이브포인트

위키원
sua332 (토론 | 기여)님의 2020년 9월 7일 (월) 11:55 판
이동: 둘러보기, 검색

세이브포인트(save point)는 특정한 지점까지 진행된 작업을 저장하고 그 이후 지점에 해당하는 작업은 취소하는 것을 말한다. 세이브포인트는 '임시저장' 또는 '부분저장'과 같은 맥락으로 이해할 수 있다. 보통 롤백(rollback)을 하면 삽입, 삭제, 업데이트 등의 작업 전체가 취소되는데, 세이브포인트는 전체가 아닌 특정 부분에서 트랜잭션을 취소하기 위해 사용한다. 세이브포인트를 쓰면 현재의 트랜잭션을 작게 분할하는 것이 가능하다. 세이브포인트는 여러 개의 에스큐엘(SQL)문의 실행을 수행하는 트랜잭션의 경우에 사용자가 트랜잭션 중간 단계에서 세이브포인트를 지정할 수 있다. 세이브포인트를 쓰려면 취소하려는 지점을 명시한 뒤, 그 지점까지 작업을 취소하는 식으로 사용하는데 이 지점을 세이브포인트라고 한다. 세이브포인트를 지정한 뒤, "롤백 투 세이브포인트 이름;"(rollback to save point name;)을 실행하면 해당 세이브포인트 지점까지 처리한 직업이 롤백된다.

세이브포인트

특징

롤백과의 차이점

활용

[구문1]

SAVEPOINT mark;
mark:
_ a SQL identifier
_ a host variable (starting with :) 

같은 트랜잭션 내에 여러 개의 세이브포인트(savepoint)를 지정할 때 mark를 같은 값으로 하면 마지막 세이브포인트(savepoint)만 부분 롤백(rollback)에 나타난다. 또한, 이전의 세이브포인트(savepoint)는 제일 마지막 세이브포인트(savepoint)로 부분 롤백(rollback)할 때까지 감춰졌다가 마지막 세이브포인트(savepoint)가 사용된 후 없어지면 나타난다.[1]

[구문2]

ROLLBACK [ WORK ] [ TO [ SAVEPOINT ] mark ] [ ; ]
mark:
_ a SQL identifier
_ a host variable (starting with :) 

앞에서는 ROLLBACK WORK 문이 마지막 트랜잭션 이후로 입력된 모든 데이터베이스의 갱신을 제거하였다. ROLLBACK WORK 문은 특정 세이브포인트(savepoint) 이후로 트랜잭션의 갱신을 되돌리는 부분 롤백(rollback)에도 사용된다. mark의 값이 주어지지 않으면 트랜잭션은 모든 갱신을 취소하면서 종료한다. 여기에는 트랜잭션에 만들어진 모든 세이브포인트(savepoint)도 포함한다. mark가 주어지면 지정한 세이브포인트(savepoint) 이후의 것은 취소되고, 세이브포인트(savepoint)를 포함한 이전의 것은 갱신 사항이 남는다.[1]

오라클(Oracle)

SAVEPOINT 포인트명1;
SAVEPOINT 포인트명2;
ROLLBACK TO 포인트명1; 

골디락스(GOLDILOCKS)

SAVEPOINT 포인트명1;
SAVEPOINT 포인트명2;
ROLLBACK TO SAVEPOINT 포인트명1; 

MS-SQL

SAVEPOINT TRANSACTION 포인트명1;
SAVEPOINT TRANSACTION 포인트명2;
ROLLBACK TRANSACTION 포인트명1; 

각주

  1. 1.0 1.1 세이브포인트와 부분 롤백〉, 《m.1day1》

참고자료

같이 보기


  의견.png 이 세이브포인트 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.