SQL_TCL

승주😊·2021년 3월 14일
0

SQL

목록 보기
3/6
post-thumbnail
post-custom-banner

TCL : TRANSACTION CONTROL LANGUAGE

트랜잭션

  • 트랜잭션은 데이터베이스의 논리적 연산단위
  • 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작을 의미 ( 하나의 트랜잭션에는 하나 이상의 SQL 문장)
  • ALL OR NOTHING의 개념!!!

트랜잭션의 4가지 특성

특성설명
원자성(AUTOMICITY)트랜잭션에서 정의된 연산들은 모두 성공하던지 전혀 실행하지 않던지! (ALL OR NOTHING)
일관성(CONSISTENCY)트랜잭션 실행 의 데이터베이스 내용이 잘못되어 있지 않다면 실행 후에도 데이터베이스는 멀쩡해야한다
고립성(ISOLATION)트랜잭션이 실행되는 도중 다른 트랜잭션의 영향을 받지 않아야 한다
지속성(DURABILITY)트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스 내용은 영구적으로 저장된다

COMMIT

  • 입력한 자료나 수정/삭제한 자료에 대해서 문제가 없다고 판단할 경우 COMMIT을 통해 TRANSACTION 완료!

    UPDATE PLAYER SET HEIGHT=100; COMMIT;
  • SQL SERVER의 경우 AUTO COMMIT되기 때문에 오류 발생시 ROLLBACK된다.
  • SQL SERVER에서 트랜잭션은 기본적으로 3가지 방식 사용
    • Auto Commit
    • 암시적 트랜잭션 : oracle과 동일
    • 명시적 트랜잭션 : 트랜잭션의 시작과 끝을 명시

ROLLBACK

  • 입력/수정/삭제/변경한 데이터에 대하여 COMMIT 이전에는 변경사항을 취소할 수 있다.
  • 데이터 변경 사항이 취소되어 데이터의 이전 상태로 복구되며 관련 행에 대한 LOCKING이 풀리고 다른 사용자들이 데이터 변경 가능하게 한다

    UPDATE PLAYER SET HEIGHT=100; ROLLBACK;
  • SQL SERVER에서 ROLLBACK을 하려면 명시적으로 트랜젝션을 선언했어야 한다.
  • 롤백의 장점
    • 데이터 무결성 보장
    • 영구적 변경 전 데이터 변경 사항 확인 가능
    • 논리적으로 연관된 작업 그룹핑하여 처리 가능

SAVEPOINT

  • 저장점을 정의하면 ROLLBACK 할 때 트랜잭션에 포함된 작업 중 현재시점에서 SAVEPOINT까지만 롤백할 수 있다.
  • 복수의 저장점을 정의할 수 있고, 동일 이름이 잇을 시 나중에 정의한 저장점이 유효하다.

    SAVEPOINT SVPT1; ROLLBACK TO SVPT1;

    캡처
profile
All the Best❤
post-custom-banner

0개의 댓글