데이터베이스 기초
계좌 표에서 트랜잭션을 시작하고, 계좌 A의 잔액에서 300을 빼는 UPDATE와 계좌 B의 잔액에 300을 더하는 UPDATE를 실행했다. 그 후 COMMIT 대신 ROLLBACK을 실행했다. 계좌 표는 어떻게 되는가?
- A계좌 B에 대한 가산만 취소되고 계좌 A의 감산은 남는다
- B두 UPDATE가 모두 취소되어 트랜잭션을 시작하기 전의 상태로 돌아간다
- CUPDATE는 이미 실행되었으므로 어느 것도 취소되지 않는다
정답과 해설 보기
정답: B. 두 UPDATE가 모두 취소되어 트랜잭션을 시작하기 전의 상태로 돌아간다
트랜잭션은 데이터베이스에 대한 일련의 처리를 묶어서 하나의 단위로 다루는 구조입니다. 트랜잭션 안에서 수행한 갱신은 COMMIT을 실행하면 확정되고, ROLLBACK을 실행하면 모두 취소되어 트랜잭션을 시작하기 전의 상태로 돌아갑니다. 이 예에서는 계좌 A의 감산과 계좌 B의 가산이 모두 취소되어 두 계좌의 잔액은 원래 그대로입니다. 이체 도중에 오류가 일어났을 때 ROLLBACK하면, 한쪽 계좌만 갱신된 어중간한 상태가 남지 않습니다. 일부만 취소하고 싶은 경우에는 SAVEPOINT로 중간에 표시를 해 두고 ROLLBACK TO SAVEPOINT로 거기까지 되돌리는 방법도 있습니다.