ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] TCL - ROLLBACK, COMMIT, SAVEPOINT
    Database/SQL (oracle, mysql) 2019. 5. 30. 11:34

    [SQL] TCL - ROLLBACK, COMMIT, SAVEPOINT

     

    - TRANSACTION - 데이터 처리의 한 단위 - 처음부터 commit까지의 작업

    - 오라클에서 발생하는 DML들을 하나의 논리적인 작업 단위(트랜잭션)로 처리한다.

       ( commit 이나 rollback이 사용되기 전까지 계속 처리한다. )

    - 하나의 트랜잭션은 ALL - or -Nothing 방식으로 처리된다.

    - savepoint는 특정지점으로 작업을 취소해서 rollback하는 것이다.

      rollback to sp2; - SP2지점으로 롤백해줘!

     

    목적

    - 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구한다.

     

    1. COMMIT

    - 저장되지 않은 모든 데이터를 데베에 저장하고 현재의 트랜잭션을 종료하라는 명령어

    - commit이 되면 db에 저장이 된다.

    - 커밋하면 트랜잭션의 처리과정이 모두 반영되며 하나의 트랜잭션 과정이 끝남

    - 트랜잭션이 발생하는 경우 새롭게 생성되거나 갱신된 데이터들이 물리적으로 영구히 저장된다.

    - DDL ( CREATE, DROP, ALTER, RENAME, TRUNCATE)은 AUTOCOMMIT 

    - 정상적인 종료시 (EXIT) 에도 COMMIT작업을 수행한다.

    - 화면창의 X버튼은 비정상 적인 종료이다.

     

    2. ROLLBACK [TO SAVEPOINT명]

    - 저장되지 않은 모든 데이터 변경사항(DML)을 취소하고 현재의 트랜잭션을 끝내라는 명령

    - 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의상태로 되돌리는 것

    - 이전 상태로 되돌아가 지금까지 수행했던 데이터베이스의 변경을 모두 무효화한다.

    - 비정상적인 종료시 ROLLBACK을 수행한다.

     

    3. SAVEPOINT: 저장점

    SAVEPOINT 저장점명;

    저장하고 싶은 지점마다 savepoint 변수명을 해주면 된다. 

    주의점은 savepoint를 순차적으로 1,2,3 생성한다면 rollback 실행시 savepoint 1을 실행한후 savepoint 3을 실행한다면 에러가 난다 . 왜? 이미 마지막 savepoint 3은 rollback을 해서 지나간 구간이기 때문에 되돌릴 수 없다.

     

    반응형

    댓글

Designed by Tistory.