SQL_16_TCL

charl hi·2021년 10월 26일
0

SQL

목록 보기
1/1

TCL (Transaction Control Language)

  • 트랜잭션을 제어하는 언어

트랜잭션

  • 하나의 논리적인 작업 단위

ex) ATM에서 현금 출금

  1. 카드 삽입
  2. 메뉴 선택
  3. 금액 확인 및 인증
  4. 실제 계좌에서 금액만큼 차감
  5. 실제 현금 인출
  6. 완료
  • 각각의 작업들을 묶어서 하나의 작업 단위로 만들어 버리는 것을 트랜잭션이라고 한다.

  • 하나의 트랜잭션으로 이루어진 작업들을 반드시 한꺼번에 완료가 되어야 하며, 그렇지 않을 경우에는 한꺼번에 취소되어야 한다.

  • ✨데이터의 변경 사항(DML = INSERT, UPDATE, DELETE)들을 하나에 트랜잭션에 담아 처리한다.

  • ✨COMMIT(트랜잭션 종료 처리 후 저장)

  • ✨ROLLBACK(트랜잭션 취소)

  • ✨SAVEPOINT(임시저장)를 통해서 트랜잭션을 제어한다.



  • 테스트할 테이블 생성

CREATE TABLE EMP_01
AS SELECT E.EMP_ID, EMP_NAME, D.DEPT_TITLE
FROM EMPLOYEE E
LEFT JOIN DEPARTMENT D ON (E.DEPT_CODE = D.DEPT_ID);


--EMP_01 테이블에서 EMP_ID가 900, 901인 사원 지우기
DELETE FROM EMP_01
WHERE EMP_ID IN (900, 901);

SELECT *
FROM EMP_01;


--두개의 행이 삭제된 시점에 SAVEPOINT 지정
SAVEPOINT SP;


--EMP_ID가 200인 사원 지우기
DELETE FROM EMP_01
WHERE EMP_ID = 200;


ROLLBACK TO SP;


ROLLBACK;
--마지막 커밋으로


여기서

ROLLBACK 후 ROLLBACK TO SP 로 하면

에러난다. ✨✨✨역행이기에??



--EMP_ID 200인 사원 지우기
DELETE
FROM EMP_01
WHERE EMP_ID = 200;


CREATE TABLE TEST(
TID NUMBER
);
--DDL(CREATE, ALTER, DROP..)구문을 실행하는 순간 기존 메모리 버퍼에 임시저장된 변경사항들이 무조건 DB에 반영된다.
--즉 COMMIT 된다.

ROLLBACK;

SELECT *
FROM EMP_01
ORDER BY EMP_ID;

롤백해도 안됨!!

  • DDL(CREATE, ALTER, DROP..)구문을 실행하는 순간 기존 메모리 버퍼에 임시저장된 변경사항들이 무조건 DB에 반영된다.
  • 즉 COMMIT 된다.

0개의 댓글