0720 SQL TCL

onnbi·2022년 7월 31일
0

sql-tutorial

목록 보기
6/6
post-thumbnail

TCL

Transaction Control Language

DCL 중 트랜잭션을 제어하는 언어를 TCL이라 한다
TRANSACTION 이란, 한 번에 수행되어야 하는 최소의 작업 단위를 말한다

하나의 트랜잭션은 반드시 모두 완료되거나 모두 취소되어야 한다
EX) 쇼핑몰에서 회원이 물건 구매한다

  • 구매 이력 테이블 < 데이터 INSERT
  • 상품 테이블 < 해당 물건에 대한 재고 UPDATE

두 작업을 하나로 묶어 하나에 문제가 생기면 같이 취소되어야 한다

트랜잭션의 특성

  • 원자성(Atomicity) : 트랜잭션과 관련된 일은 모두 수행되거나 모두 실행되지 않는 것을 보장한다

  • 일관성(Consistency) : 성공했다면 데이터베이스는 그 일관성을 유지해야 한다

  • 고립성(Isolation) : 수행하는 도중 다른 연산작업이 끼어들지 못하도록 한다

  • 지속성(Durability) : 성공했다면 그 결과는 반드시 데이터베이스에 반영되고 영구적으로 저장된다

TCL종류

  • COMMIT : 트랜잭션 작업이 정상완료되면 변경 내용 저장
  • ROLLBACK : 트랜잭션 작업을 모두 취소하고 최근 COMMIT시점으로 이동
  • SAVEPOINT : 임시저장지점
  • ROLLBACK TO : 트랜잭션 작업을 취소하고 SAVEPOINT 시점으로 이동

최근 COMMIT시점으로 이동하는 ROLLBACK

INSERT INTO USER_TBL VALUES (4, ‘test4’, ‘pass4’); --데이터 추가
SELECT * FROM USER_TBL; --테이블 확인
COMMIT; --트랜잭션작업 적용
ROLLBACK; --트랜잭션작업 취소
SELECT * FROM USERTBL; --테이블 확인
-- 'test4'까지 INSERT된 경과가 출력된다

COMMIT할 때 모든 SAVEPOINT는 삭제된다

INSERT INTO USERTBL VALUES (4, ‘test4’, ‘pass4’); --데이터 추가
SAVEPOINT sp1 --작업 임시 저장
INSERT INTO USERTBL VALUES (5, ‘test5’, ‘pass5’); --데이터 추가
COMMIT; --트랜잭션 작업 저장
SELECT * FROM USERTBL; --테이블 확인
ROLLBACK to sp1; --sp1 시점 적용
-- sp1을 찾을 수 없기 때문에 에러

DML에 의해서 테이블에 변화가 있을 때 (INSERT, UPDATE, DELETE) 트랜잭션 작업까지 해주어야 완료된다

profile
aelatte coding journal

0개의 댓글