(6) PL/SQL 트랜잭션

트랜잭션 개념과 COMMIT, ROLLBACK


시작하기 전에

사용 교재 : 오라클SQL과 PL/SQL을 다루는 기술 (https://thebook.io/006696/)

예제 코드 : https://github.com/gilbutITbook/006696


SERVEROUTPUT 설정

PL/SQL 결과물을 보기 위해 아래의 실행문을 실행

SET SERVEROUTPUT ON;

트랜잭션(Transaction)

데이터베이스 작업의 단위 또는 한꺼번에 모두 수행되어야 할 연산들의 모음

하나의 트랜잭션은 ROLLBACK되거나 COMMIT된다.


트랜잭션이 필요한 이유

은행 업무를 생각해보자.

A라는 사람이 계좌에서 돈을 인출하려고 한다.

인출하기 직전에 갑자기 서버가 다운되서 ATM이 먹통이 난다고 했을 때, A의 계좌에서 돈이 나갔을까?

일반적인 실생활에서는 돈이 마이너스가 되지는 않을 것이다.

왜 돈이 마이너스가 되지 않을까?

A가 계좌에서 돈을 인출하는 과정 전체가 트랜잭션이기 때문이다.

트랜잭션은 도중에 비정상적으로 종료되면 ROLLBACK되어 그간 수행했던 모든 행위가 취소된다.

만일 트랜잭션으로 수행하지 않는다면, 돈도 못뽑고, 계좌에서 돈도 나가는 결과가 나왔을 것이다.


COMMIT

DB에 직접 반영하는 역할.

COMMIT문을 실행하지 않으면 INSERT, UPDATE, DELETE, MERGE의 결과가 최종적으로 테이블에 반영되지 않는다.

COMMIT [WORK];


ROLLBACK

COMMIT과는 반대로 DB에 가해진 변경사항을 취소시킨다.

마지막으로 COMMIT한 시점으로 돌아간다.

SAVEPOINT를 설정해놓으면 그 시점으로 돌아간다.

ROLLBACK [WORK] [TO [SAVEPOINT] 세이브포인트명];






Categories:

Updated:

Leave a comment