Undo 기반 ROLLBACK

트랜잭션 장애가 나면 오류가 난 문장만 지우는 것이 아니라, 그 트랜잭션이 남긴 변경 전체를 이전 상태로 되돌립니다.

1. 시작 상태
COMMIT 전

`students`에 아직 `2024001` 행이 없습니다.

student_id
name
상태
행 없음
첫 INSERT 성공
2. 제약 위반 발생
PK 중복

첫 INSERT는 반영됐지만, 두 번째 INSERT가 같은 PK를 다시 써서 트랜잭션이 실패합니다.

실행 중인 SQL
INSERT ... (2024001, '김철수')   성공
INSERT ... (2024001, '이영희')   실패
student_id
name
상태
2024001
김철수
미커밋
Undo 로그가 기억한 원래 상태
INSERT 취소용 역연산:
DELETE WHERE student_id = 2024001
오류 감지 → ROLLBACK
3. 복구 완료
부분 반영 없음

Undo 로그를 따라가며 첫 INSERT까지 취소하므로, 테이블은 트랜잭션 시작 전 상태로 돌아갑니다.

student_id
name
상태
다시 행 없음
최종 의미
김철수 INSERT도 취소
이영희 INSERT는 반영되지 않음
핵심: 트랜잭션 장애의 복구는 실패 지점만 제거하는 작업이 아니라, 그 트랜잭션 전체를 원래 상태로 되돌리는 작업입니다.