230808 TIL Chapter 21. DB TCL ( Transaction Control Language )

최규연·2023년 8월 8일
0

TIL

목록 보기
22/57

트랜잭션 제어 언어

  • COMMIT (트랜잭션 종료 후 저장)
  • ROLLBACK (트랜잭션 취소)
  • SAVEPOINT (임시저장)

DML은 데이터 조작 언어로 데이터의 삽입, 수정, 삭제이므로 TCL은 DML과 관련되어 있다.

INSERT를 수행한다고 바로 DB에 반영 되는 것이 아니고 INSERT 수행 후 트랜잭션에 추가되었다가 COMMIT을 하면 이제야 DB에 반영이 되는 것이다. 물론 INSERT만 하고 결과를 출력해보면 DB에 반영이 되어있는것 처럼 나오지만 직접적으로 COMMIT을 시켜 DB에 반영시켜야 한다.
약간 깃허브 ADD, COMMIT과 비슷한 느낌.

COMMIT

메모리 버퍼 (트랜잭션)에 임시 저장된 데이터 변경 사항을 DB에 반영시키는 것

1을 INSERT하면 ---> 트랜잭션에 ( 1 ) 이런 식으로 들어가게 되지만 아직 DB안엔 아직 ( ) 이렇게 비어있다.
이후에 COMMIT을 하게 되면 트랜잭션 ( ) ---> DB ( 1 ) 이런식으로 트랜잭션에서 DB로 넘어가게 된다.


ROLLBACK

메모리 버퍼 (트랜잭션)에 임시 저장된 데이터 변경 사항을 삭제하고 INSERT 하기 전 상태의 DB로 돌아간다.

INSERT 1을 하면 트랜잭션에 ( 1 )이 담겨있고 여기서 ROLLBACK하면 트랜잭션에 있던 1이 사라지고 트랜잭션은 ( )으로 돌아가게 된다.
당연히 DB에 저장되어 있는 데이터의 값의 변화도 없다.


SAVEPOINT

메모리 버퍼 (트랜잭션)에 저장 지점을 설정해서 ROLLBACK 수행시 COMMIT 하지 않은 부분을 모두 ROLLBACK 하는 것이 아닌 원하는 지점만 일부 ROLLBACK 하는 것.

[ SAVEPOINT 사용법 ]
SAVEPOINT 포인트명1;
...
SAVEPOINT 포인트명2;
...
ROLLBACK TO 포인트명1; -- 포인트명1 지점까지 변경사항 삭제

0개의 댓글