[SQL] TCL(TRANSACTION CONTROL LANGUAGE)

1.개요

  • 데이터베이스의 논리적 연산단위
  • 한 개 이상의 데이터베이스 조작단위(하나 이상의 SQL구문포함)
  • ALL OR NOTHING개념
  • 특성 :
    • 원자성(atomicity)-정의된 연산이 모두 성공해야함.하나라도 실패시 모두 실행하지 않음.
    • 일관성(consistency)-실행전에 내용잘못이 없다면 실행후 데이터베이스의 내용에 잘못이 있으면 안 됨
    • 고립성(isolation)-다른 트랜잭션의 영향을 받으면 안 됨
    • 지속성(durability)-성공한 트랜잭션이 생신한 데이터베이스내용은 영구적으로 저장

2.COMMIT

COMMIT

  • 입력이나 수정한 자료를 저장하고싶을때 COMMIT명령을 내려 저장
    (COMMIT전)
  • BUFFER에만 영향을 받았기에 데이터 변경 이전상태로 복구가능
  • 현재 사용자가 SELECT 문장으로 결과 확인 가능
  • 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없음
  • 변경된 행은 잠금(LOCKING)이 설정되어 다른 사용자가 변경할 수없음
    (COMMIT후)
  • 데이터 변경사항이 데이터베이스에 반영
  • 이전데이터 영구삭제
  • 모든 사용자가 결과 확인가능
  • 관련된 행의 잠금이 해제, 다른사용자들이 조작가능
1
2
-- 데이터 수정 변경 후
COMMIT;

AUTO COMMIT(SQL Sever방식)

  • DDL,DML이 수행될 때마다 DBMS가 트랜잭션 컨트롤하는방식,
    명령이 성공적으로 수행되면 자동으로 COMMTI,
    실패하면 ROLLBACK됨

암시적트랜잭션(ORACLE방식)

  • 트랜젝션 시작은 DBMS가, 끝은 사용자가 COMMIT, ROLLBACK으로 처리

명시적트랜잭션

  • 트랜젝션 시작과 끝을 사용자가 BEGIN TRANSACTION || COMMIT TRANSACTION ,
    ROLLBACK TRANSACTION으로 처리

3.ROLLBACK

ROLLBACK

  • 데이터 이전상태로 복구, 관련된 행에 대한 잠금이 풀림
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    --데이터 수정 변경 후
    ROLLBACK;
    ```

    ## 4.SAVEPOINT
    ### SAVEPOINT
    - ROLLBACK이 실행될 저장점을 지정
    - 복수저장점 정의가능
    - 먼저 정의된 SAVEPOINT로 롤백할 경우 이후 저장된 SAVEPOINT로 되돌릴 수 없음
    - DDL문장을 실행하면 자동커밋됨
    - DML 명령 후 DDL명령을 입력시 DML, DDL 명령모두 자동커밋
    - 데이터베이스 정상종료하면 자동 커밋
    - 어플리케이션 이상 종료는 자동 롤백
    ```sql
    SAVEPOINT SVPT1;
    ROLLBACT TO SVPT1;

    SAVE TRANSACTION SVPT2;
    ROLLBACK TRANSACTION SVPT2;
# sql

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×