본문 바로가기
자격증/SQL개발자(SQLD)

3-4장. SQL 기본(TCL[TRNSACTION CONTROL LANGUAGE])

by 김엉배 2023. 5. 23.
728x90
반응형

 

SQLD 단원별 목록으로


1. 트랜잭션 개요

- 데이터베이스의 논리적 연산 단위

- 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작을 가리킨다.

- 분할할 수 없는 최소단위. 그렇기 때문에 전부 적용하거나 전부 취소한다.(ALL OR NOTHING)

 

 

 


2. COMMIT

- 입력한 자료나 수정한 자료에 대해서 또는 삭제한 자료에 대해서 전혀 문제가 없다고 판단되었을 경우

  COMMIT 명령어를 통해 트랜잭션을 완료할 수 있다.

  • COMMIT이나 ROLLBACK 이전의 데이터 상태
    - 단지 메모리 BUFFER에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능
    - 현재 사용자는 SELECT 문장으로 결과를 확인 가능
    - 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다.
    - 변경된 행은 잠금(LOCKING)이 설정되어서 다른 사용자가 변경할 수 없다.
    - 관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.


  • COMMIT 이후의 데이터 상태
    - 데이터에 대한 변경 사항이 데이터베이스에 반영된다.
    - 이전 데이터는 영원히 잃어버리게 된다.
    - 모든 사용자는 결과를 볼 수 있다.

  • SQL Server에서의 트랜잭션
    - AUTO COMMIT : SQL Server의 기본 방식이며, DML, DDL을 수행할 때마다 DBMS가 트랜잭션을 컨트롤하는 방식
    - 암시적 트랜잭션 : 트랜잭션의 시작은 DBMS가 처리하고 트랜잭션의 끝은 사용자가 명시적으로 COMMIT 또는 ROLLBACK 처리
    - 명시적 트랜잭션 : 트랜잭션의 시작과 끝을 모두 사용자가 명시적으로 지정하는 방식

 


3. ROLLBACK

- 테이블 내 입력한 데이터나, 수정한 데이터, 삭제한 데이터에 대하여 COMMIT 이전에는 변경 사항을 취소할 수 있는데 데이터베이스에       롤백(ROLLBACK) 기능을 사용한다. 롤 백(ROLLBACK)은 데이터 변경 사항이 취소되어 데이터의 이전 상태로 복구되며,

   관련된 행에 대한 잠금(LOCKING)이 풀리고 다른 사용자들이 데이터 변경을 할 수 있게 된다.

  • COMMIT과 ROLLBACK을 사용함으로써 효과
    - 데이터 무결성 보장
    - 영구적인 변경을 하기 전에 데이터의 변경 사항 확인 가능
    - 논리적으로 연관된 작업을 그룹핑하여 처리 가능

 


4. SAVEPOINT

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

  • SAVEPOINT SVPT1;
    - SAVEPOINT 명을 부여하여 실행하면 저장점 설정 이후에 있었던 데이터 변경에 대해서만 원래 데이터 상태로 되돌아가게 된다.
    - SQL Server는 SAVE TRANSACTION을 사용하여 동일한 기능을 수행할 수 있다.
  • SAVE TRANSACTION SVTR1;
    - 저장점까지 롤백할 때는 ROLLACK 뒤에 저장점 명을 지정한다.
  • ROLLBACK TRANSACTION SVTR1;

 

728x90
반응형