전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Database/Oracle

[Oracle] TCL(TRANSACTION CONTROL LANGUAGE)

2023. 8. 2. 22:43

< TCL : TRANSACTION CONTROL LANGUAGE >
트랜젝션 제어 언어
    
* 트랜젝션(TRANSACTION)
- 데이터베이스의 논리적 연산단위
- 데이터의 변경사항 (DML 추가, 수정, 삭제)들을 하나의 트랜젝션에 묶어서 처리
   DML문 한 개를 수행할 때 트랜젝션이 존재하면 해당 트랜젝션에 같이 묶어서 처리
   트랜젝션이 존재하지 않으면 트랜젝션 만들어서 묶음
   COMMIT 하기 전까지 변경사항들을 하나의 트랜젝션에 담게됨
   커밋을 해야만이 실제 DB에 반영이 된다고 생각하면 됨!
- 트랜젝션의 대상이 되는 SQL : INSERT, UPDATE, DELETE (DML)
      
COMMIT(트랜젝션 종료 처리 후 확정)
ROLLBACK(트랜젝션 취소)
SAVEPOINT(임시저장)
      
- COMMIT; 진행 : 한 트랜젝션에 담겨있는 변경사항들을 실제 DB에 반영시키겠다는 의미 (후에 트랜젝션 사라짐)
- ROLLBACK; 진행 : 한 트랜젝션에 담겨있는 변경사항들을 삭제(취소) 한 후 마지막 커밋 시점으로 돌아감

- SAVEPOINT 포인트명 : 진행 : 현재 이 시점에서 해당 포인트명으로 임시저장점을 정의해두는 것

   ROLLBACK 진행시 전 체 변경사항들을 다 삭제하는게 아니라 일부만 롤백가능


SELECT * FROM EMP_01;

-- 사번이 900번인 사원 지우기
DELETE FROM EMP_01
WHERE EMP_ID = 900;
-- 뭔가 진짜 삭제된것처럼 보임!

DELETE FROM EMP_01
WHERE EMP_ID = 901;

ROLLBACK;
-- 변경사항 취소되고, 트랜젝션도 없어짐. 데이터 다시 되살아난다.

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

SELECT * FROM EMP_01;

-- 800번, 황민현, 총무부 사원 추가
INSERT INTO EMP_01 VALUES(800,'황민현','총무부');

COMMIT;
-- 실제 DB에 반영됨!

ROLLBACK; -- 이미 커밋해서 못돌아감

-- 217, 216, 214 사원 지움
DELETE FROM EMP_01
WHERE EMP_ID IN(217, 216, 214);

-- 임시저장점 잡기 
SAVEPOINT SP;

-- 801, 안효섭, 인사관리부 사원 추가
INSERT INTO EMP_01
VALUES(801, '안효섭', '인사관리부');

-- 218 사원 지움
DELETE FROM EMP_01
WHERE EMP_ID = 218;

SELECT * FROM EMP_01;

-- 801 추가랑 218 삭제만 취소하고 싶다!!
ROLLBACK TO SP;

COMMIT;

-- 900, 901 사원 지움
DELETE FROM EMP_01
WHERE EMP_ID IN(900, 901);

DELETE FROM EMP_01
WHERE EMP_ID = 218;

SELECT * FROM EMP_01;

-- DDL문
CREATE TABLE TEST(
    TID NUMBER
);

ROLLBACK;

-- DDL문(CREATE, ALTER, DROP)을 수행하는 순간 기존에 트랜젝션에 있던 변경사항들을 
-- 무조건 COMMIT(실제 DB 반영)
-- 즉, DDL문 수행 전 변경사항이 있었다면 정확히 픽스(COMMIT, ROLLBACK) 하고 하자!!
    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] OBJECT(2) - SEQUENCE
    • [Oracle] OBJECT(1) - VIEW
    • [Oracle] DCL(DATA CONTROL LANGUAGE), ROLE
    • [Oracle] DDL_실습문제
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바