공부기록장

[SQL]데이터베이스 commit, rollback 시점 완벽 정리 본문

▶ study/SQL

[SQL]데이터베이스 commit, rollback 시점 완벽 정리

친절한 3 2021. 4. 12. 17:09

1. savepoint 의미

savepoint란 현재 작업 중인 transaction을 잘게 쪼개는 역할을 한다. savepoint를 저장해서 rollback to [savepoint] 라는 명령어를 통해 지정한 savepoint로 rollback명령을 수행할 수 있다. 아래 그림을 보면 더 잘 이해가 된다.

위의 사진처럼, insert까지의 명령을 전부 수행했다고 가정하자. 이때 rollback할 수 있는 방법이 3가지가 된다.

1. rollback to savepoint B

이 경우에는, 지정해줬던 savepoint B 시점으로 이동하여 B 시점 이후로 수행했던 작업들이 rollback된다.

2. rollback to savepoint A

이 경우에는, 지정해줬던 savepoint A 시점으로 이동하여 A 시점 이후로 수행했던 작업들이 rollback된다.

3. rollback

이 경우에는, 마지막 commit 시점으로 이동하여, 그 이후에 일어났던 모든 작업들이 rollback된다.


2. savepoint 예제

- 트랜잭션 실행 전 결과


- 아래 트랜잭션 실행 후 결과

savepoint c;
DELETE from student where name ='김길동';
insert into student values('박수수',10,'1009', 'M', 'F');
savepoint b;
update student set name = '옥수수' where id = '1009';


1. rollback to savepoint c 실행 후 결과

rollback savepoint c;


2. rollback to savepoint b 실행 후 결과

rollback savepoint b;


3. rollback 실행 후 결과

rollback;

트랜잭션 실행 전 결과와 같아짐.

 

Comments