COMMIT / ROLLBACK

해연·2023년 8월 1일
0

데이터베이스

목록 보기
10/14

COMMIT

변경된 테이블을 영구적으로 반영
모든 작업을 정상적으로 처리하겠다고 확정하는 명령어

  • 트랜잭션의 처리 과정을 DB에 반영하기 위해서, 변경된 내용 모두 영구저장
  • commit 수행하면 하나의 트랜잭션 과정을 종료한다 -> commit후에는 변경사항이 DB에 반영되며, 이전 데이터는 영원히 잃어버림
  • 현재 사용자는 select문으로 확인 가능
  • Transaction(Insert,Delete,Update) 작업 내용을 실제 DB에 저장-> 이전 데이터가 완전히 Update된다.
  • commit 이후에는 모든 사용자가 변경한 데이터 결과를 볼 수 있다.

ROLLBACK

커밋이 완료되기 전에만 작업에 의해 변경된 내용을 취소하는 데 사용

  • 작업 중 문제가 발생하였을 때, 트랜잭션의 처리과정에서 발생한 변경 사항 취소하고 트랜잭션 과정을 종료한다.
  • 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전 상태로 되돌린다.
  • 이전 Commit한 곳까지만 복구

⭐️ 트랜잭션 작업 중 하나라도 문제가 발생하면 모든 작업을 취소해야하기 때문에 하나의 논리적인 작업 단위로 구성해야 한다
=> 문제가 발생하면 논리적인 작업 단위를 모두 취소한다.

SAVEPOINT

현재 작업 중인 Transaction을 잘게 쪼개는 역할

  • 전체 작업을 RollBack 하는 것이 아니라 현 시점에서 SavePoint까지 일부 트랜잭션을 롤백할 수 있다.

  • 저장점 정의

SAVEPOINT save1;
  • 저장점까지 롤백
ROLLBACK TO save1;

특정 저장점에 롤백하면 그 이후에 생성된 저장점은 무효가 된다. 예를 들어, SavepointA를 실행한다면 그 이후에 생성된 SavepointB는 존재하지 않는다.


출처
https://wikidocs.net/4096
https://hoon93.tistory.com/24
https://excelkingdom.blogspot.com/2017/11/what-is-commitrollback-and-savepoint-in.html

profile
물음표를 느낌표로 바꾸며 성장하는 예비 백엔드 개발자입니다.

0개의 댓글