본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 트랜잭션 처리

// 트랜잭션

- 업무 실행 단위

- 논리 명령 단위

- 데이터를 조작하는 업무의 시간적 단위

- 일련의 사건의 집합 
    ~ 은행에서 돈을 인출하는 행동

- 1개 이상의 명령어로 구성된 작업 단위

- 새로운 트랜잭션이 시작하는 경우
    1. commit 실행 직후
    2. rollback 실행 직후
    3. 클라이언트 접속 직후

- 현재 트랜잭션이 종료되는 경우
    1. commit 실행 > 현재 트랜잭션을 DB에 반영 O
    2. rollback 실행 > 현재 트랜잭션을 DB에 반영 X
    3. 클라이언트 접속 종료
           a. 정상 종료
                - 현재 트랜잭션에 아직 반영되지 않은 명령어가 남아있으면 사용자에게 선택지를 제공
           b. 비정상 종료
                - rollback 처리
                - 엄밀히 말하자면 rollback도 commit도 하지 않음 > DB에 반영되지 않음
    4. DDl 실행
           - create, alter, drop 실행 즉시 commit 된다.  > Auto Commit
           - DB 구조를 변경하는 행동으로 데이터에 영향을 미치기 때문에 사전에 미리 저장됨.


//  트랜잭션 명령어: DCL, TCL

    1. commit
        - commit을 완료하면 다른 세션에서도 확인할 수 있다.
        - 현재 트랜잭션의 모든 작업을 실제 DB에 반영한다.
        - commit 직후 > 현재 트랜잭션 완료 > 새로운 트랜잭션이 시작된다.

    2. rollback
        - 임시 저장소에 test 했던 내용을 저장하지 않는다. (되돌리기)
        - rollback 직후 > 이전 트랜잭션 완료 > 새로운 트랜잭션이 시작된다.

    3. savepoint
        - rollback 시점을 사용자가 정의

savepoint a;

rollback to a; > savepoint a로 돌아갈 수 있음

 

'데이터베이스(DB) > Oracle' 카테고리의 다른 글

[Oracle] 정규식  (0) 2023.02.13
[Oracle] 연산자  (0) 2023.02.13
[Oracle] 데이터 조작(DML)  (0) 2023.02.10
[Oracle] 테이블 수정  (0) 2023.02.08
[Oracle] 데이터 형식  (0) 2023.02.07