ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2.8 SQL 트랜잭션 명령어(COMMIT, ROLLBACK)
    SQL 과정 2019. 2. 8. 12:31

    1. 트랜잭션 제어 명령어

     가. 트랜잭션 제어어는 트랜잭션의 DML작업단위를 제어하는 명령어

     나. COMMIT

       1) 모든 작업을 정상 처리하겠다고 확정하는 명령어

       2) 트랜잭션의 처리과정을 데이터베이스에 반영하기 위해, 변경된 내용을 모두 영구 저장한다.

       3) COMMIT 수행하면, 하나의 트랜잭션 과정을 종료하게 된다.

       4) TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 실제 데이터베이스에 저장된다.

       5) 이전 데이터가 변경된 데이터로 완전히 UPDATE된다.

       6) COMMIT후 모든 사용자가 변경된 데이터의 결과를 볼수 있다.

       7) COMMIT이후 데이터 상태

         가) 데이터에 대한 변경 사항이 물리적 디스크에 반영된다.

         나) COMMIT 이전 데이터는 복구할수 없다.

         다) 모든 사용자가 변경된 결과를 볼수 있다.

         라) 트랜잭션과 관련된 행의 장금이 풀리며 다른 사용자들이 조작할수 있다.


     다. ROLLBACK

       1) 작업 중 문제 발생 시, 트랜잭션의 처리과정에서 발생한 변경 사항을 취소하고, 트랜잭션 과정을 종료

      시킨다.

       2) 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전 상태로 되돌아 간다.

       3) TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 취소한다.

       4) 이전 COMMIT한 곳까지만 복구된다.

       5) ROLLBACK 이후 데이터 상태

         가) ROLLBACK된 DML 문장은 메모리 상의 Buffer에만 영항을 미치기 때문에 복구가 가능하다.

         나) 트랜잭션과 관련된 행의 잠금이 풀리게 된다.


    * dept07 데이터 삭제


    * ROLLBACK으로 이전 상태로 되돌렸다.





     라. COMMIT과 ROLLBACK 도식도

       1) 트랜잭션은 여러 개의 SQL명령어들이 모여서 이루어지며 이러한 작업 중 하나라도 

      문제 발생시 모든 작업이 취소되도록 하나의 논리적인 작업단위로 구성해 놓아야한다.



       2) COMMIT & ROLLBACK 장점

         가) 데이터 무결성을 보장

         나) 영구적으로 데이터를 변경하기 전에 데이터의 변경사항을 확인 할수 있다.

         다) 논리적으로 연관된 작업을 그룹화 할수 있다.


    * deptno 20을 삭제한 후 영구 반영(COMMIT)하고, 다시 이전 상태로 되돌리는 것(ROLLBACK)이 불가하다.


     마. 자동 COMMIT & ROLLBACK

       1) 사용자가 COMMIT이나 ROLLBACK명령어를 명시적 수행하지 않아도 아래와 같은 경우에는 자동으로 COMMIT, ROLLBACK이 발생한다.


       2) AUTO COMMIT

         가) DDL문에는 CREATE, ALTER, DROP, RENAME, TRUNCATE명령문이 있는데 이 명령문은 자동으로 COMMIT 일어난다.


    (1) dept08 1행 삭제(deptno 40)


    (2) dept09 테이블 생성


    (3) ROLLBACK을 했을때 (2)CREATE 명령문으로 인해 자동으로 COMMIT되어 이전 것들이 영구적 반영되었다.


    (4) DDL(TRUNCATE ..) 명령문비정상적으로 종료 되어도 자동 COMMIT이 일어난다.


Designed by Tistory.