STUDY/DATABASE

MYSQL - TCL(트랜잭션제어어)

3unB 2022. 5. 2. 10:49
반응형
트랜잭션 ?
    하나의 논리적인 작업 단위
    여러 개의 DML이 하나의 트랜잭션을 구성할 수 있음(insert, update, delete)
    하나의 DDL이 하나의 트랜잭션을 구성함(create, alter, drop, truncate)

 

1. commit

    : 변경작업을 영구히 저장

2. rollback

    : 변경작업을 트랜잭션 처음으로 되돌림

commit;
-------------------------------------------
Transection1(start)-> 		insert ---;
				update ---;
                           	update ---;
                          	  commit;
 <- Transection1(end)
 ------------------------------------------
Transection2(start)-> 		delete ---;
				update ---;
                         	   rollback;
 <- Transection2(end)
 ------------------------------------------
  T(start, end) -> create table ---;(DDL)
  		  (auto commit 내포)
-------------------------------------------
T(start) -> 			insert ---;
	  			update---;
            			create table---;
          			(autocommit)
<- T(end)

 

3. savepoint

    : 트랜잭션 진행 중 되돌아갈 지점을 생성 하는 명령어 (중간 저장 x)

    savepoint 생성 : create savepoint 포인트명;

    savepoint로 되돌리기 : rollback to 포인트명;

    트랜잭션 종료 시 자동 삭제됨.

-----------------------------
T(start)->
		update ---;
   		savepoint A;
		update ---;
     	  	delete ---; -- (여기서 취소)
     	 	savepoint B;
      		insert ---;
      		rollback to A ( 처음 update 임시데이터 상태)
            .
            .
            .
            commit; or rollback;
<- T(end)

rollback : 트랜잭션의 처음으로 되돌림 => 트랜잭션 종료 o

rollback to : 해당 포인트 지점으로 되돌림 =>트랜잭션 종료 x


연습!           

 * auto-commit transacrions 설정 해제 후

ⓐ 101번 사원 salary 변경 & savepoint A생성

 102번 사원 salary 변경 & savepoint B생성

ⓒ 102번 사원 salary 변경 취소 -------> A로 rollback

ⓓ 102번 사원 salary 변경 전으로 롤백 완료  ------- 아직 임시데이터 상태 

  => commit 해야함

저장 완료!

반응형