트랜잭션이란?
쪼갤 수 없는 업무의 최소 단위
예시
A은행->B은행으로 돈을 이체하려고 한다.
A은행에서 돈이 인출되었는데 알 수 없는 오류가 발생하여 B은행으로 돈이 입금되지 않았다.
이러한 상황을 대비하고자 거래가 성공적으로 완료해야 돈이 인출되도록 완전한 거래를 승인하고, 실패한 경우 원래대로 원상복귀되도록 제어한다.
이렇게 거래의 안전성을 확보하는 것이 트랜잭션이다. 데이터베이스에선 테이블에서 데이터를 읽어온 후 다른 테이블에 입력하거나 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌린다. 데이터베이스에선 처리 과정이 모두 성공해야지만 데이터를 최종적으로 데이터베이스에 반영한다.
내 계좌에서 잔액을 빼는 일과 상대 계좌에 금액을 더하는 일을 다른 트랙잭션으로 분리해서는 안된다. 더 이상 쪼갤 수 없기 때문에 일부만 동작해서는 안되는 것이 트랜잭션의 핵심 이론이다.
일반적으로 DB에서 아는 것이 commit(커밋), rollback(롤백)인데 모든 연산을 취소하지 않고 정해진 부분까지만으로 되돌리고 싶다면 savepoint를 실행한다.
SAVEPOINT 세이브포인트이름;
ROLLBACK TO 세이브포인트이름;