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 |