◆트랜잭션 :최소작업단위



트랜잭션의 시작 : 첫 번째 DML문 이후

트랜잭션의 종료 : 1) commit or rollback

       2) DDL문 실행

       3) DCL문 실행

       4) 툴 종료

       5) 시스템 문제가 생겼을 때




프로세스1

DML문(시작)--------

Update employees

set salary += salary+1000

where employee_id = 113;

-----------------------------------커밋x -> 확정 x

.

.

.

.

Commit(확정)!!

 


*확정 전까지는 하나의 트랜잭션



 

프로세스1

프로세스2

Update employees

set salary += salary+1000

where employee_id = 113;

 

 

 

 

 

 

 

 

 

Update employees

set salary += salary+1000

where employee_id = 50;

대기

데드락

 

 

 

Update employees

set salary += salary+1000

where employee_id = 50;

 

Update employees

set salary += salary+1000

where employee_id = 113;

대기

 

 

 

 

 

데드락

 *양방향에서 서로를 기다리게 되면서 무한대기에 빠진다.

 

-명시적 트랜잭션 제어문


COMMIT = 모든 데이터 변경 사항을 영구적으로 적용

SAVEPOINT = 현재 트랜잭션 안에 저장점을 만든다.

ROLLBACK = 커밋 전의 데이터 변경사항을 폐기

ROLLBACK TO SAVEPOINT = 지정한 저장점으로 롤백

 

--Lorentz : 4200

update tcltest set salary = salary * 1.5 where last_name = 'Lorentz';

 

select * from tcltest;

 

--Lorentz = 6300

 

savepoint s1;

 

update tcltest set salary = salary * 2 where last_name = 'Lorentz';

select * from tcltest;

 

--Lorentz : 12600

 

savepoint s2;

 

rollback to s1;

 

rollback;


'Programming > 데이터베이스' 카테고리의 다른 글

Oracle 문법 정리 - 시퀀스, 뷰  (0) 2018.01.09
Oracle 문법 정리 - DDL  (0) 2018.01.08
Oracle 문법 정리 - 트랜잭션  (0) 2018.01.05
Oracle 문법 정리 - DML  (0) 2018.01.04
Oracle 문법 정리 - 집합 연산자  (0) 2018.01.03
Oracle 문법 정리 - join  (0) 2018.01.02

+ Recent posts