[DataBase] 트랜잭션 제어

 트랜잭션 제어 



트랜잭션이란 

관계형 데이터베이스에서 하나의 작업 또는 밀접하게 연관 되어 있는 작업 수행을 위해 나눌 수 없는 최소 단위를 말하며 이를 제어하는 명령어를 TCL이라고 합니다 . 


트랜잭션을 제어하는 명령어 

하나의 트랜잭션에 묶여 있는 데이터 조작어의 수행 상태는 모든 명령어가 정상적으로 수행 완료된 상태 또는 모든 명령어가 수행되지 않아 취소된 상태 , 이 두가지 상태로만 존재합니다 . 
즉 , 데이터베이스에 영구히 반영하거나 작업전체를 취소합니다 . 


실습에 이용할 DEPT_TCL 테이블 생성 
CREATE TABLE DEPT_TCL
    AS SELECT *
        FROM dept;


DEPT_TCL 에서 입력, 수정, 삭제
INSERT INTO DEPT_TCL VALUES(50, 'DATABASE', 'SEOUL');
UPDATE DEPT_TCL SET LOC = 'BUSAN' WHERE DEPTNO = 40;
DELETE FROM DEPT_TCL WHERE DNAME = 'RESEARCH' ;
SELECT * FROM DEPT_TCL ;


50번 부서가 추가되었고 40분 부서의 LOC 열에 BUSAN으로 수정 됩니다. 그리고 20번 부서는 삭제 됩니다 .

트랜잭션 취소

  • ROLLBACK으로 실행 취소하기
    • 만약 이모든 작업의 수행을 취소하고 싶다면 ROLLBACK 명령어를 사용합니다 . 

  • 트랜잭션을 계속 반영을 위해 COMMIT
    • 트랜잭션 명령어를 데이터베이스에 영구히 반영하고 싶다면 COMMIT 명령어를 사용합니다 . 

COMMIT 명령어는 지금까지 트랜잭션에서 데이터 조작 관련 명령어를 통해 변경된 데이터를 모두 데이터 베이스에 영구히 반영합니다 . 

실무에서 COMMIT을 잘못 행하여 낭패를 보는 상황이 자주 발생합니다 . UPDATE나 DELETE 문을 잘못 작성하여 실수로 데이터를 몇 만건 이상 날려 버리는 상황이 생깁니다 . 
COMMIT으로 실행한 내용의 반영은 되돌릴 수 없으므로 신중히 진행해야 합니다 .