ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • commit과 rollback
    Oracle-diary/TLC 2020. 1. 30. 17:44
    요약
    TCL정의 일련의 작업처리를 위한 연관된 dml들의 모임
    transaction login logout 사이의 모든 dml
    rollback rollback;
    commit commit;
    commit과 무결성 비정상종료 autorollback 정상 종료 autocommit
    부분롤백 dml 실행후 savepoint 지정어;
    -----------------------------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------------------------------------
     
     
    TCL이란?
    일련의 작업처리를 위한 연관된 DML들의 모음이다.
     
    특징은 ALL or nothing으로 완전히 실행되던지 아니면 전혀 안되던지 중간의 성격은 없다 .
    all= commit (DB에 반영 된다.)
    nothing=rollback (DB에 반영 안된다.)
    ------------------------------------------------------------------------------------------
    transaction이란?
    sql login후부터 logout까지 발생하는 모든 dml =>1개의 트랜잭션이다.
     
    ------------------------------------------------------------------------------------------
    rollback이란?
    지금까지 했던 명령을 전부 되돌릴 수 있다.
    잘못 입력한 것에 대해서 취소할 수 있다.
     
    * 취소하기.
     
    ex)
     
    insert into dept(deptno,dname,loc)
    values(90,'연구','서울');
     
     
    rollback만 치면 로그인후 지금까지 것들 rollback 시킨다.
     
    1T ==> LOGIN ==>LOGOUT
     
    TCL을 만나면 현재 트랜잭션을 종료
    다음번 첫 SQL문을 만나면 새로운 트랜잭션이 시작
     
    ------------------------------------------------------------------------------------------
    commit?
    DB에 보내 확정하는 것
     
    cmd하나에서 수정한후 그냥 내비두면 다른 곳에는 바뀌지 않는다
    commit;이라는 명령어를 써야 다른 곳에도 똑같이 보인다.
     
     
    ------------------------------------------------------------------------------------------
     
    database의 중요한 성질
     
    '무결성' autorollback&autocommit
     
     
    명령어를 db에 보내다가 끊김. ->비정상종료->autorollback이 된다 ->지금까지한것 전부취소됨.-> commit을 항시 해주어야 한다.
     
    완벽한 명령어를 보내야 완료된다.
     
    만약 쓰는 중에 exit를 누르고 나가게 되면 autocommit이 된다. 무결성원칙에의해 완료되었다는것을 보낸것임.
     
    ------------------------------------------------------------------------------------------
    부분롤백?
    명령어를 입력하고 있는데 중간에 명령어 오류가 있다면 전부 ROLLBACK하고 다시 해야만 한다.DB에 보내버리면
    책임은 개발자가 저야하기 때문에 신중해야만 한다.
     
    그러한 것을 막기 위해 SAVEPOINT를 중간중간에 세워 놓으면 부분 롤백이 가능해서
    오류난 부분만 뜯어 고칠 수 있다.
     
    사용법
    SAVEPOINT 지정어;
    ex)
    insert into dept
    values(1,'a','b');
    1 개의 행이 만들어졌습니다.
     
     
    SQL> savepoint a1;
     
    저장점이 생성되었습니다.
     
     
    insert into dept
    values (3,'c','d');
     
    1 개의 행이 만들어졌습니다.
     
    savepoint c1;
     
    부분 롤백
    rollback to a1 해주면
    a1 이후의 명령어는 전부 취소되고 a1이전의 값은 보존된다. <-SAVEPOINT는 ANSI표준 명령이 아니다!
    COMMIT과 ROLLBAKC은 ANSI 표준 명령이다 !
     
     
     
    *한번 취소하면 다시 되돌아갈 수 없다.

    댓글

Designed by Tistory.