▶ 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;
트랜잭션 실행 전 결과와 같아짐.