일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- c#
- 운영체제
- SQL
- 알고리즘
- 문법 정리
- MongoDB
- hyperledger
- oracle
- 오라클
- 유사코드
- 오라클 디비
- smart cast
- K6
- 백준 알고리즘
- 프로젝트
- auto configure
- 파이썬 소스
- JVM
- spring
- gradle
- jsp
- 학점
- 리눅스
- dynamic query
- 초대장
- 자바 프로젝트
- 티스토리
- 자바
- resilience4j
- 파이썬
- Today
- Total
모종닷컴
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; |
'Programming > 데이터베이스' 카테고리의 다른 글
Oracle 문법 정리 - 시퀀스, 뷰 (0) | 2018.01.09 |
---|---|
Oracle 문법 정리 - DDL (0) | 2018.01.08 |
Oracle 문법 정리 - DML (0) | 2018.01.04 |
Oracle 문법 정리 - 집합 연산자 (0) | 2018.01.03 |
Oracle 문법 정리 - join (0) | 2018.01.02 |