Programming/오라클[SQL]

오라클[sql] merge / commit / rollback

콩king 2022. 9. 24. 21:10

▶ DML

-- INSERT UPDATE DELETE / SELECT
▶ DDL

-- CREATE ALTER DROP / TRUNCATE / RENAME

▶ CREATE AS SELECT

▶ INSERT INTO SELECT

▶ INSERT ALL 

 

▶ MERGE : INSERT + UPDATE 합친 기능
     -- 기존테이블에 자료 존재하면 UPDATE (자동)

     -- 없는 데이터는 INSERT 진행

 

MERGE INTO 테이블명

USING 복사할데이터를 담은 테이블명 ( 복사할것이 없으면 daul)

    ON -- 조인조건
 WHEN MATCHED THEN
      UPDATE SET
 WHEN NOT MATCHED THEN
      INSERT ()
      VALUES ();

   

▶ COMMIT / ROLLBACK

-- INSERT / UPDATE / DELETE 데이터를 바꾸는 작업 > 트랜젝션(TRANSACTION)

-- 모든 작업을 정상적으로 처리하겠다 라고 확정짓는 명령어

-- 트랜젝션의 처리과정을 모두 저장하여 반영해라

-- commit을 했다 > 하나의 트랜젝션 과정을 종료했다.

-- 이전 데이터를 update를 했다 > 모든 사용자가 변경된 데이터를 볼 수 있다.


▶ ROLLBACK

-- 변경사항을 취소하고 트랜젝션이라는 작업의 과정을 종료

-- 트랜젝션으로 인한 하나의 묶음처리(저장)을 하기 이전상태로 되돌리기

-- INSERT / UPDATE / DELETE 을 모두 취소

-- 이전 COMMIT 한 상태까지 복구

 


▶ INSERT > DELETE > INSERT > COMMIT(1) > UPDATE > DELETE > INSERT > COMMIT(2)

     (1) : INSERT DELETE INSERT 한 작업으로 1차 저장

     (2) : UPDATE DELETE INSERT 한 작업으로 2차 저장

 

▶ INSERT > DELETE > INSERT > COMMIT(1)

          > UPDATE > DELETE > "ROLLBACK" > INSERT > COMMIT(2)

     -- ROLLBACK : ROLLBACK부터 이전 COMMIT 지점까지 작업을 모두 취소

     -- UPDATE DELETE 작업을 모두 취소하고 COMMIT(1) 지점에서부터 시작