DB 테이블 조작시 특정 데이터의 여부에 따라 insert 혹은 update를 하는 경우가 항상 발생한다.
나는 실무적으로 알티베이스만 사용을 해와서 그런지 이러한 작업이 비효율적이다고 생각했다. 이번에 오라클을 접하면서 MERGE문을 처음 알게 되었다.
MERGE INTO구문은 데이터의 여부에 따라 조작을 한번에 작업할 수 있는 구문이다.
데이터가 존재할 경우 UPDATE(OR DELETE)를 수행할 수 있고 존재하지 않은 경우 INSERT를 수행할 수 있다.
MERGE syntax
MERGE INTO table_name alias
USING (table | view | subquery) alias -- 하나의 테이블만 이용한다면 DUAL 활용
ON (join condition) -- WHERE절에 조건 쓰듯이
WHEN MATCHED THEN -- ON 이하의 조건에 해당하는 데이터가 있는 경우
UPDATE SET col1 = val1[, ...] -- UPDATE 실행
WHEN NOT MATCHED THEN -- ON 이하의 조건에 해당하는 데이터가 없는 경우
INSERT (column lists) VALUES (values); -- INSERT 실행
* INTO : 대상 테이블 또는 뷰
* USING : 비교 대상 테이블 또는 뷰, 서브쿼리. 하나의 테이블로 사용할 때는 DUAL을 이용한다.
* ON : 조건문
* WHEN MATCHED : 조건문에 대해 데이터가 있을 경우 아래 쿼리를 수행(UPDATE OR DELETE)
* WHEN NOT MATCHED : 조건문에 대해 데이터가 없을 경우 아래 쿼리를 수행(INSERT)
참고
https://hello-nanam.tistory.com/30
http://unabated.tistory.com/entry/오라클-MERGE-INTO-한번에-INSERT-UPDATE-하기
'밥줄 > DB' 카테고리의 다른 글
[DB] aexport, iloader (altibase) (0) | 2021.04.16 |
---|