고래씌

[Oracle] 10. TCL(COMMIT, ROLLBACK) 본문

Database/Oracle

[Oracle] 10. TCL(COMMIT, ROLLBACK)

고래씌 2023. 11. 30. 11:24

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