더북(TheBook)

DML 명령어 중 UPDATE 명령어를 생각해 봅시다. employees 테이블에서 Steven King 직원의 email 정보를 SKING에서 S_King으로 수정하려 합니다. UPDATE 명령어를 이용해서 데이터를 변경할 명령어를 실행하면 트랜잭션이 시작됩니다(). UPDATE 명령어를 사용했기 때문에 데이터가 S_King으로 변경됩니다. 다만 현재 상태는 데이터베이스에 영구적으로 반영된 상태가 아니므로 다른 사용자가 해당 email 데이터를 조회했을 때는 기존 데이터인 SKING으로 출력됩니다(). 데이터가 문제없이 정확하게 갱신되었다면 커밋을 하고(), 데이터는 정상적으로 데이터베이스에 영구적으로 반영됩니다. 다만 과정에서 제약 조건 위반 등 어떤 사유에 의해 UPDATE 명령어 실행이 실패되면() 트랜잭션은 롤백되어 철회됩니다().

트랜잭션을 확정하는 SQL 개념인 커밋과 롤백에 대해 다시 한 번 살펴보겠습니다. 커밋과 롤백은 트랜잭션 제어어(TCL, Transaction Control Language)라고도 하는데, 커밋은 우리가 워드프로세서에서 문서 작업을 마무리한 다음 파일로 저장하기 위해 ‘저장’ 버튼을 누르는 것과 유사하고, 롤백은 문장이 틀렸을 때 되돌리기를 해서 방금 전 상태로 되돌아가는 것과 유사합니다. 차이점은 데이터베이스에서 커밋은 데이터베이스에 영구적으로 반영되기 때문에 커밋 이전으로 되돌리기가 쉽지 않다는 점입니다.

 

표 9-4 커밋과 롤백

개념

설명

커밋(commit)

트랜잭션의 모든 미결정 데이터를 영구적으로 반영함으로써 트랜잭션을 종료한다(저장과 유사).

롤백(rollback)

트랜잭션의 모든 미결정 데이터 변경을 포기함으로써 트랜잭션을 종료한다(되돌리기와 유사).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.