더북(TheBook)

10.4.1 트랜잭션 처리

기억을 되살리기 위해 1장에서 소개했던 트랜잭션 개념도를 다시 살펴보겠습니다.

▲ 그림 10-3 트랜잭션의 개념

트랜잭션(transaction)은 ‘거래’를 뜻한다고 했죠. 은행 거래를 예로 들어, A 은행 계좌에서 10만 원을 B 은행 계좌로 이체합니다. 이체 과정 중에 오류로 A 은행 계좌에서는 10만 원이 빠져나갔는데, B 은행 계좌로 10만 원이 입금되지 않았습니다. 이때 B 은행 계좌에 10만 원이 들어온 것이 확인되면 거래를 성사시키고, 그렇지 않으면 거래 자체를 없었던 것으로 취소하면 된다고 했습니다.

테이블 관점에서 보면 계좌에 대한 입금과 출금을 테이블 데이터에 대한 입력, 수정, 삭제라고 보면 됩니다. 예를 들어 INSERT 문으로 emp_delete 테이블에 데이터를 신규로 입력하거나 UPDATE 문으로 데이터를 수정하거나 DELETE 문으로 데이터를 삭제할 때, 잘못된 입력, 수정, 삭제 작업을 했다면 해당 작업을 취소하고 데이터를 원 상태로 복원할 수 있습니다. 물론 정상적으로 작업했다면 그대로 진행하면 됩니다.

MySQL에서는 이런 트랜잭션 처리를 SQL 문 중에서 트랜잭션 제어어(TCL)로 처리합니다. TCL에는 대표적으로 COMMITROLLBACK 문이 있습니다. COMMIT 문은 데이터를 입력, 수정, 삭제한 후 이 작업을 영구적으로 테이블에 반영할 때 사용합니다. ROLLBACK 문을 실행하면 입력, 수정, 삭제하기 이전 상태로 돌아갈 수 있습니다. 한마디로 거래 성공은 COMMIT, 거래 실패 후 원 상태로 복귀하려면 ROLLBACK 문을 실행하면 됩니다. 두 문장은 DML 중 INSERT, UPDATE, DELETE 문으로 테이블에 있는 데이터를 직접 처리할 때만 적용됩니다.

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