TCL : TARNSACTION CONTROL LANGUAGE
트랜잭션을 제어하는 언어
* 트랜잭션 (TRANSACTION)
- 데이터베이스의 논리적 연산단위
- 데이터의 변경사항 (DML)들을 하나의 트랜잭션에 묶어서 처리
COMMIT(확정)하기 전까지는 변경사항들을 하나의 트랜잭션에 담게 됨
- 트랜잭션의 대상이 되는 SQL : INSERT, UPDATE, DELETE
- COMMIT (트랜잭션 종료처리 후 확정)
- ROLLBACK (트랜잭션 취소)
- SAVEPOINT (임시저장)
COMMIT; 진행 : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영하겠다.
실제 반영시킨 후 트랜잭션은 비워짐
ROLLABCK; : 하나의 트랜잭션에 담겨있는 변경사항들을 삭제한 후 마지막 COMMIT 시점으로 돌아감
SAVEPOINT 이름; : 지금 시점 임시저장점 정의
ROLLBACK 이름; : 해당 임시저장점으로 트랜잭션을 롤백함
롤백후에 다시 컬럼을 조회해보면 송은희가 있다.
BUT,
홍길동 사원을 추가하고
COMMIT; 후에 ROLLBACK;을 해도 홍길동이 추가되기전 테이블로 되돌아가지 않는다.
SAVEPIONT
사번이 214, 216, 217인 사원정보를 삭제하고
SAVEPIONT로 SP1 이름을 지어줘서 저장을 한다.
그 후에 사번 200인 사원을 삭제하고 홍길동사원을 추가한다음 SP1으로 롤백을 하면,
사번 200인 사원의 정보는 그대로 있고, 홍길동직원은 추가 되지 않았다.
SAVEPIONT SP1 시점으로 사번 217, 216, 214 정보만이 삭제된 테이블만 보이게 된다.
※ DDL 구문(CREATE, ALTER, DROP)을 실행하는 순간
기존에 트랜잭션에 있던 모든 변경사항들을 무조건 실제 DB에 반영(COMMIT)
시킨 후 DDL이 수행 됨
=> DDL 수행 전 변경사항이 있었다면 정확히 픽스 (COMMIT, ROLLBACK) 하고
DDL을 실행해야 한다. (신중히!!!!! )
사번 800번인 사원의 정보를 삭제하고
DDL인 CREATE TABLE을 실행한다.
그 후에 ROLLBACK을 실행하고 테이블 EMP_02를 조회하면
사번 800번인 사원의 정보가 돌아와있지않고 그대로 삭제되어 있다.
'*SQL_Oracle*' 카테고리의 다른 글
OBJECT < VIEW > 옵션 (0) | 2021.11.12 |
---|---|
OBJECT < VIEW > (0) | 2021.11.11 |
DCL < GRANT, REVOKE> (0) | 2021.11.11 |
DDL < ALTER, DROP > (0) | 2021.11.11 |
DML <INSERT, UPDATE, DELETE> (0) | 2021.11.11 |