프로그래밍/SQL

SQL-18) TCL - commit, rollback, savepoint : SQL,SQLD,SQLD 자격증

LeeSeunghyuk 2020. 11. 10. 17:33
반응형

안녕하세요 이승혁입니다.

 

지난 포스팅에서는 데이터를 수정, 삽입, 삭제하는 데이터 조작어(DML)에 대해서 학습을 진행했습니다.

이번 포스팅에서는 트랜잭션(Transaction) 제어 언어인 TCL에 대해서 학습을 진행해 보도록 하겠습니다.

 

※ TCL(Transaction Control Language)

 

1. commit

2. rollback

3. savepoint

 

※ Transcation이란 ? 

 

     일련의 DMl문의 집합입니다.

     DMl 문장 중 하나를 시작했으면 transaction이 시작된 것이다.

     commit이나 rollback을 수행하면 transaction이 종료된다.

 

 

ㆍ TCL - commit

 

     변경한 데이터를 database에 영구히 저장하는 명령어

 

     - 명시적 commit : commit 명령어를 직접 수행한다.

     - 암시적 commit : 1. 정상 종료(Exit)

                             2. DDL(Database Definition Language) : 문장을 실행

                             3. DCL(Database Control Language) : 문장을 실행

                             ex ) delete -> rollback               : 수행 가능    --> delete ( DML )

                                   delete -> create -> rollback : 수행 불가능  --> create ( DDL문장으로 암시적 commit)


ㆍTCL - rollback

 

     데이터 변경 작업을 취소하는 명령어

 

     - 암시적 rollback : 1. 비정상 종료

                              2. 비정상적 시스템 다운

 

 

※ lock 기능

 

    도스창을 2 열고 같은 계정으로 접속합니다.

 

    한 세션에서 변경한 데이터는 다른 세션에서 변경할 수 없다.

    한 세션에서 update 문을 수행하면, update를 수행한 그 행에 lock을 걸기 때문에

    다른 세션은 내가 변경한 데이터의 row(행)을 변경할 수 없습니다.

 

    ===>>> 현업에서 lock이 지속될 경우 DBA 보고한다. 

 

     정확한 데이터 분석을 위해서는 지금 이 시간부터 내가 분석하는 데이터에 대해서

     변경작업이 일어나지 않았으면 좋겠는 경우가 있습니다.

 

     update 뿐 아니라 select 문에서도 lock을 걸 수 있습니다.

 

      select …. for update 문 입니다.

select ename, sal
from emp
where job = 'SALESMAN'
for update;

ㆍ TCL - savepoint

 

     rollback을 특정 시점 기준으로  rollback하게 해주는 기능입니다.

 

 

ex )

delete from emp where ename = 'SCOTT';
savepoint a ;      -- SCOTT 삭제 후 저장
delete from emp where ename = 'KING';
savepoint b;       -- SCOTT, KING 삭제 후 저장

rollback to savepoint a; -- SCOTT만 삭제한 포인트로 rollback

select * from emp;

 

 

이번 시간에는 데이터를 변경 후 되돌리거나, 이를 저장시키는 commit , rollback에 대해 알아보았습니다.

 

데이터를 변경 후 DDL, DCL만 사용하지 않는다면 다시 되돌릴 수 있다는 것을 인지하는 것이 좋을 것 같습니다.

감사합니다.

반응형