8. 트랜잭션 제어어 / TCL


1. 기본

  • sql developer에서 insert문을 통해 테이블에 값 입력
    • 메모리 상에만 입력
    • cmd창에서 해당 테이블 로드 시,insert문을 통해 입력한 데이터 들어가있지 않다
  • 입력한 데이터가 전달되지 않을 경우 전부 취소(rollback)
    • 은행의 송금과 같은 개념
    • a계좌 출금 후 b계좌에 입금 확인 시 거래 성사 (commit)
    • a계좌 출금 후 b계좌에 입금되지 않았을시 취소 (rollback)
    • 네트워크 장애 등의 이유
  • 모두 처리 (commit) 혹은 모두 취소 (rollback)
  • 반드시 트랜잭션 처리해야한다
  • savepoint를 설정하여, 트랜잭션 관리 가능

2. transaction

  • 논리적인 작업 단위
  • 여러가지 dml작업들을 하나의 단위로 묶어둔 것
  • 모든 dml이 성공해야 해당 트랜잭션 성공
  • 하나라도 실패하면 전체 실패
  • 모든 트랜잭션은 크기가 다를 수 있다

3. tcl

  • commit : 트랜잭션 내의 작업의 결과를 확정하는 명령어
  • rollback : 트랜잭션 내의 모든 명령어들을 취소하는 명령어
  • dml에 대해서 작동하며 create 등의 명령문은 자동 커밋

a. commit

  • 메모리 상에서 변경된 내용을 데이터 파일에 반영
  • commit을 수행하지 않고 세션이 끊어지면 반영되지 않는다
    • dml문을 실행하더라도 바로 데이터가 반영되지 않는다
    • 변경된 데이터들은 오라클 메모리상에만 존재
    • commit문장을 실행하여 데이터파일에 변경사항이 반영

b. rollback

  • 메모리 상에서 변경된 내용을 데이터파일에 반영하지 않고 종료
  • 변경된 데이터들을 변경 전 상태로 되돌리는 역할
  • 작업한 내용을 되돌리는 취소의 개념