DB Savepoint 란 DB Transaction내에서 하위 Transaction을 실현하기 위한 데이터베이스 언어인  SQL 구문 중 하나이다.

Transaction 내에 특정 지점을 지정하면 그 이전애 실행된 내용과 상관없이 아래 내용을 실행중 오류가나면 Savepoint이후에 실행된 부분만 롤백 할 수 있다.

단일 Transaction 에 여러 Savepoint 생성할 수 도 있다.

savepoint 는 표준 SQL 에도 채용하고 있어 많은 관계형 DB에서 지원하고 있다.(PostgreSQL, Oracle DB, MS SQL Server, MySQL...)


예제)

UPDATE employees 
    SET salary = 7000 
    WHERE last_name = 'Banda';
SAVEPOINT banda_sal;

UPDATE employees 
    SET salary = 12000 
    WHERE last_name = 'Greene';
SAVEPOINT greene_sal;

SELECT SUM(salary) FROM employees;

ROLLBACK TO SAVEPOINT banda_sal;
 
UPDATE employees 
    SET salary = 11000 
    WHERE last_name = 'Greene';
 
COMMIT; 

위의 예제를 보면 banda_sal 라는 Savepoint 를 생성하고 하위 에 greene_sal 라는 Savepoint 를 추가로 생성하였다. 그리고 banda_sal 하위에서 업데이트를 한 후 banda_sal 를 롤백 하고 다시 하위에 업데이트를 했다. 


(예제 출처 : https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10001.htm)

'프로그래밍 > 그외' 카테고리의 다른 글

facade pattern  (1) 2016.06.21
scheduling - 스케줄링  (0) 2016.06.01
DI (Dependency Injection)  (0) 2016.05.26
First Class Object  (0) 2016.05.25

+ Recent posts