더보기
목차
1. COMMIT
2. ROLLBACK
3. SAVEPOINT
✍TCL(TRANSGACTION CONTROL LANGUAGE)
Transgaction : 데이터베이스의 논리적 연산 단위
TCL : 트랜잭션 제어 언어
데이터의 변경 사항을 묶어 하나의 트랜잭션에 담아 처리한다.
트랜잭션에 담겨지는 대상이 되는 SQL
: INSERT, UPDATE, DELETE (DML, 데이터 조작 언어)
SQL DEVELOPER에서 INSERT, UPDATE, DELETE 작성 시 바로 DB에 반영되는것이 아니라 메모리 임시버퍼에서 COMMIT 해야 DB에 반영된다.
COMMIT한 것을 없애고 싶을 때 : ROLLBACK
SVAPOINT S1을 중간 저장한다고 했을 때 ROLLBACK TO S1시 SAVEPOINT한 저장지점까지만 삭제할 수 있게 한다.
COMMIT하면 다 저장되고 ROLLBACK하면 다 사라지니깐 논리적 연산 단위라고 한다.
🚩 COMMIT
: 메모리 버퍼에 임시 저장된 데이터 변경 사항(INSERT, UPDATE, DELETE)을 DB에 실제로 반영한다.
예제
SELECT * FROM 테이블명;
COMMIT;
➡ 현재 메모리 임시 버퍼(트랜잭션)를 DB에 반영
🚩 ROLLBACK
: 메모리 버퍼에 임시 저장된 데이터 변경 사항을 삭제하고 마지막 COMMIT 상태로 돌아가는 것이다.
예제
SELECT * FROM 테이블명;
COMMIT;
- 현재 메모리 임시 버퍼(트랜잭션)를 DB에 반영
DELETE FROM 테이블명
WHERE 컬럼명 = '데이터';
- 삭제 내용이 트랜잭션에 임시 저장
SELECT * FROM 테이블명;
- 위의 데이터 삭제 확인
ROLLBACK;
➡ 트랜잭션 내용을 삭제하고 마지막 COMMIT 상태로 돌아간다.
== DELETE 적용되기 전의 상태
🚩 SAVEPOINT
: 저장 지점을 정의하여 ROLLBACK 시 트랜잭션 전체의 내용을 삭제하는 것이 아닌
저장된 지점까지만 삭제할 수 있도록 하는 것이다.
Rollback하는 시점을 제어
예제
DELETE FROM 테이블명 WHERE 컬럼명= '데이터 1';
SAVEPOINT SP1;
-- 데이터 1이 삭제된 상태를 임시 저장
DELETE FROM 테이블명 WHERE 컬럼명= '데이터 2';
SELECT * FROM 테이블명;
ROLLBACK TO SP1;
➡ 데이터2만 복구 == SP1 지점까지만 롤백
🚩 TCL 주의사항
- TCL 구문은 DML(INSERT, UPDATE, DELETE )에만 적용된다.
- DML 구문 작성 중 DDL 또는 DCL 구문이 수행될 경우
트랜잭션 내용이 바로 DB에 반영된다. (자동 COMMIT)
반응형
'Backend > Oracle' 카테고리의 다른 글
[DB] DCL :: 권한, 사용자 계정 생성하는 법 (0) | 2021.09.28 |
---|---|
[DB] DDL :: ALTER , DROP (0) | 2021.09.28 |
[DB] DDL : CREATE, 제약조건 CHECK (0) | 2021.09.27 |
[DB] DML (INSERT, UPDATE, MERGE, DELETE) (0) | 2021.09.25 |
[DB] SUBQUERY (0) | 2021.09.23 |