[Oracle] 오라클 #21, 트랜잭션(Transaction)의 개념 및 예제(commit, rollback, savepoint)

트랜잭션, Transaction

- 오라클(DBMS)에서 발생하는 1개이상의 명령어들을 하나의 논리 집합으로 묶어놓은 단위 -> 제어(통제)

- 트랜잭션에 의해서 관리되는 명령어 : DML(insert, update, delete)만 포함 , 데이터에 조작을 가하는 명령어.



트랜잭션 관리

- DCL의 한 종류

1. commit

2. rollback

3. savepoint


트랜잭션 제어

-하나의 트랜잭션으로 묶여있는 모든 명령어 대상 > 모든 명령어가 성공하면 트랜잭션 성공. 일부 명령어가 실패하면 트랜잭션 실패



1. 새 트랜잭션이 시작하는 경우

    a.클라이언트가 접속한 직 후

    b.commit 명령어를 실행한 직후

    c.rollback명령어를 실행한 직후

    d.ddl,dcl 명령어를 실행한 직후


2. 현재 트랜잭션이 종료하는 경우

    a.클라이언트가 접속을 종료한 직후

    b.commit 명령어를 실행한 직후

    c.rollback명령어를 실행한 직후

    d.ddl,dcl 명령어를 실행한 직후(Auto Commit)

    


3. 자동 커밋, Auto Commit

- ddl, dcl 명령어에 의해서 현재 트랜잭션이 종료되는 현상.

- 커밋되는 순간 원상태로 되돌리기가 매우 힘드므로(사실상 못돌리지만 인의적으로 조작할경우의수를 남겨놈) 조심**********



4. Auto Commit

- 툴의 자동커밋기능

- 모든 insert, update, delete를 각각 실행할 때마다 commit이 바로 이어서 실행됨.

- rollback 불가능


commit 과 rollback


트랜잭션 시작(create문에 의해서 직전 트랜잭션 종료, 새 트랜잭션 시작.)

create table 서울시

as

select * from tblInsa where city='서울'; --서울시라는 테이블을 만들었을 때.


select * from 서울시;--19명

A

delete from 서울시 where name ='홍길동';

delete from 서울시 where name ='한석봉';

delete from 서울시 where name ='유관순';

update 서울시 set jikwi = '대리' where name='유관순';


 (1) rollback; 서울시 테이블의 상태가 A시점으로 돌아감


 (2) commit; 


savepoint


A

delete from 서울시 where name = '김말자';


savepoint a; -> 직접 컴파일하여 저장포인트를 만듬


delete from 서울시 where name = '우재옥'; 


savepoint b; -> 


delete from 서울시 where name = '김영길';



rollback; --트랜잭션 취소. 시점으로 돌아감


 (1) rollback to a; --> 김말자는 그대로 없고, 우지옥 김영길은 롤백됨.

 (2) rollback to b; --> 김말자와 우재옥은 없고, 김영길은 살아남.


초보 : commit, rollback

중급 이후 : savepoint

댓글

Designed by JB FACTORY