Oracle 문법 정리 - 트랜잭션
◆트랜잭션 :최소작업단위
트랜잭션의 시작 : 첫 번째 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; |