코딩하는 문과생
[SQL] Oracle, 트랜잭션 제어와 세션 본문
데이터 조작어(DML)를 사용해 데이터에 미치는 영향은 트랜잭션과 세션 안에서 최종적으로 실행 취소 또는 반영이 결정된다.
트랜잭션
: 더이상 분할할 수 없는 최소 수행 단위
어떤 기능 한가지를 수행하는 'SQL문 덩어리'
ALL OR NOTHING(작업 전체를 완료하거나 하지 않는다. 부분적 실행X)
DB에 접속하는 동시에 시작
TCL
:ALL OR NOTHING 중 하나의 상태로 유도하는 명령어. 즉, 데이터 조작(DML)을 영구반영 또는 작업을 전체 취소한다.
-사전작업
CREATE TABLE DEPT_TCL
AS SELECT * FROM DEPT;
INSERT INTO DEPT_TCL
VALUES(50, 'DATABASE', 'SEOUL');
UPDATE DEPT_TCL
SET LOC='BUSAN'
WHERE DEPTNO=40;
DELETE FROM DEPT_TCL
WHERE DNAME='RESEARCH';
SELECT * FROM DEPT_TCL;
-ROLLBACK
: 현재 트랜잭션에 포함된 DML명령어를 모두 취소
ROLLBACK;
-COMMIT
: 명령어를 DB에 반영
COMMIT 명령어 사용 기점으로 DML 취소 불가
COMMIT;
-SAVEPOINT
: 작업을 취소할 지점을 지정
세션:
어떤 활동을 위한 시간이나 기간
- 오라클 세션: DB접속을 시작으로 접속이 종료되기까지 전체 기간
- 세션이 여러개라는 말: 토드(A)로 접속하고 SQL PLUS(B)로 접속하는 경우
- 읽기 일관성: 데이터를 변경 중인 세션 이외 나머지 세션에서는 본래의 데이터를 보여주는 특성
- 세션 A에서 해당 명령어 실행 후 SELECT문으로 조회
DELETE FROM DEPT_TCL
WHERE DNAME='SALES';
LOCK
: 특정 세션에서 조작 중인 데이터는 트랜잭션이 완료되기 전까지 다른 세션에서 조작을 할 수 없다.
-LOCK종류
- 행 레벨 LOCK
- 테이블 레벨 LOCK
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] Oracle, 객체 종류 (0) | 2020.03.31 |
---|---|
[SQL] Oracle, 데이터 정의어(DDL) (0) | 2020.03.31 |
[SQL] Oracle, 데이터 조작어(DML) (0) | 2020.03.30 |
[SQL] Oracle, 서브쿼리 (0) | 2020.03.30 |
[SQL] Oracle, 조인 (0) | 2020.03.30 |