고래씌
[Oracle] 10. TCL(COMMIT, ROLLBACK) 본문
1. TCL(Transaction Control Language)
- 트랜잭션을 제어하는 언어
1) 트랜잭션(Transaction)
- 데이터 베이스의 논리적 작업 단위
- 데이터 변경사항(DML에 의한)들을 하나의 트랜잭션으로 묶어서 처리
=> COMMIT(확정)하기 전까지의 변경사항들을 하나의 트랜잭션으로 모아둔다.
- 트랜잭션의 대상이 되는 SQL : INSERT, UPDATE, DELETE
2) 트랜잭션의 종류
- COMMIT; : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영하겠다는 것을 의미
- ROLLBACK; : 변경사항들을 실제 DB에 반영하지 않겠다는 것을 의미. 트랜잭션에 담겨있는 변경사항도 다 삭제한 후 마지막 COMMIT 시점으로 돌아간다.
- SABEPOINT 포인트명; : 현재 시점으로 임시저장점을 정의해 두는 것.
- ROLLBACK TO 포인트명 : 전체 변경사항들을 삭제하는 것이 아니라 해당 포인트 지점까지의 트랜젝션만 롤백함.
▶ ROLLBACK
☞ 삭제하였던 행들이 다시 롤백됨
▶ SAVEPOINT, ROLLBACK TO
- EMP_01 테이블에서 사번이 214, 216, 217인 사원들 삭제
- EMP_01 테이블에 사번 801번 이름 김말똥 인사부 사원을 추가
☞ ROLLBACK 후 다시 실행한 결과, SAVEPOINT로 돌아간다
▶ 사번이 900, 901 사번인 사원들 삭제
☞ 22행 이었던 것으로 롤백이 안되고 20행으로 그대로 남아있게 된다. 즉, ROLLBACK이 안되었다!
※ 주의사항
☞ DDL 구문 (CREATE, ALTER, DROP)을 실행하는 순간 기존에 트랜잭션에 있던 모든 변경사항은 무조건 실제 DB에 반영 시킨 후 DDL이 수행됨.
☞ 즉, DDL 수행전 변경사항이 있다면 정확히 픽스(COMMIT, ROLLBACK)을 하고 DDL을 실행해야한다.
'Database > Oracle' 카테고리의 다른 글
[Oralce] DDL 실습문제 (0) | 2023.11.30 |
---|---|
[Oracle] 11. Object(VIEW) (0) | 2023.11.30 |
[Oracle] 9. DCL(GRANT, REVOKE) (0) | 2023.11.30 |
[Oracle] 8-2. DDL(ALTER, DROP) ② - DROP (0) | 2023.11.30 |
[Oracle] 8-1. DDL(ALTER, DROP) ① - ALTER (0) | 2023.11.30 |