안녕하세요 이승혁입니다.
지난 포스팅에서는 데이터를 수정, 삽입, 삭제하는 데이터 조작어(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만 사용하지 않는다면 다시 되돌릴 수 있다는 것을 인지하는 것이 좋을 것 같습니다.
감사합니다.
'프로그래밍 > SQL' 카테고리의 다른 글
SQL-20) Index : SQL 속도 향상, SQL index, SQL 인덱스 (0) | 2020.12.11 |
---|---|
SQL - 칼럼 데이터 타입 변경하기 (0) | 2020.12.08 |
SQL-19) DDL 문장 , table , view : SQL, SQLD (0) | 2020.12.08 |
SQL-17) DML - Insert, update, delete, merge : SQL, SQLD, SQLD 자격증, Oracle (0) | 2020.11.09 |
SQL-16) exist , with , 계층형 질의 : SQl, SQLD 자격증, ADsP, 함수 (0) | 2020.11.05 |
SQL-15)집합연산자 - UNION, UNION ALL, INTERSECT, MINUS : sqld, sqld 자격증 (0) | 2020.11.05 |
SQL-14 ) 서브쿼리(Sub Query) - 2 : SQL, SQLD, SQLD자격증, 서브 쿼리, 오라클 (0) | 2020.11.05 |
SQL-13) 서브 쿼리(Sub Query) : SQL문, SQLD, SQLD 자격증, DB , database (0) | 2020.10.30 |