SQL- TCL

박현·2022년 11월 6일
0

SQL

목록 보기
29/34
post-custom-banner

트랜잭션

  • 트랜잭션은 데이터베이스의 논리적 연산단위이다.
  • 트랜잭션이란 밀접히 관련돼 분리될 수 없는 한 개 이상의 데이터베이스 조작을 가리킨다.
  • 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다.
  • 트랜잭션은 전부 적용하거나 전부 취소한다. ALL OR NOTHING의 개념이다.

트랜잭션의 특성

  • 원자성(Atomicity)
    : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing)

  • 일관성 (Consistency)
    : 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 돼 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.

  • 고립성 (Isolation)
    : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.

  • 지속성 (Durability)
    : 트랜잭션이 성공적으로 수행되면, 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

COMMIT

: 입력, 수정, 삭제한 데이터에 대해 전혀 문제가 없다고 판단됐을 경우 COMMIT명령어로 트랜잭션을 완료할 수 있다.

UPDATE EMP SET SAL = 1000;
COMMIT;

COMMIT이후의 데이터 상태는 다음과 같다.

  • 데이터에 대한 변경사항이 데이터베이스에 반영된다.
  • 이전 데이터는 영원히 잃어버리게 된다.
  • 모든 사용자는 결과를 볼 수 있다.
  • 관련된 행에 대한 잠금이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.

ROLLBACK

: 테이블내 입력한 데이터나 수정한 데이터, 삭제한 데이터에 대해 COMMIT이전에는 변경사항을 취소할 수 있다.
롤백은 데이터 변경사항이 취소돼 데이터가 이전 상태로 복구되며, 관련된 행에 대한 잠금이 풀리고 다른 사용자들이 데이터 변경을 할 수 있게 된다.

UPDATE EMP SET SAL = 1000;

ROLLBACK;

ROLLBACK 후의 데이터 상태는 다음과 같다.

  • 데이터에 대한 변경사항은 취소된다.
  • 데이터가 트랜잭션 시작 이전의 상태로 되돌려진다.
  • 관련된 행에 대한 잠금이 풀리고 다른 사용자들이 행을 조작할 수 있게 된다.

COMMIT과 ROLLBACK을 사용함으로써 다음과 같은 효과를 볼 수 있다.

  • 데이터 무결성 보장
  • 영구적인 변경을 하기 전에 데이터의 변경 사항 확인가능
  • 논리적으로 연관된 작업을 그룹핑해 처리 가능

SAVEPOINT

: SAVEPOINT을 정의하면 롤백할때 트랜잭션에 포함된 전체 작업을 롤백하는 것이아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.

SAVEPOINT SVPT1;

ROLLBACK TO SVPT1;

참고자료 : SQL전문가가이드

post-custom-banner

0개의 댓글