오라클 - MERGE INTO

배세훈·2021년 8월 6일
0

DB

목록 보기
5/19

오라클 MERGE INTO - 한번에 INSERT, UPDATE 하기

사용방법)

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 실행

예시) 서로 다른 테이블

MERGI INTO employee emp
	USING (SELECT salary, dev, age
    		FROM develop
            WHERE emble = '0010') t
        ON (emp.dev = t.dev)
        WHEN MATCHED THEN
        	UPDATE SET emp.emble = '0701', emp.rog='snake'
        WHEN NOT MATCHED THEN
        	INSERT (emp.emble, emp.rog, emp.tag)
            VALUES (t.emble, t.rog, t.tag)

예시) 같은 테이블

MERGE INTO employee
	USING DUAL ON (dev = '1' AND rog = 'snake')
    WHEN MATCHED THEN
    	UPDATE SET emble = '0010', rog = 'dog'
    WHEN NOT MATCHED THEN
    	INSERT (emp.emble, emp.rog, emp.tag)
        VALUES ('0020', 'cat', 'test');

예시) 업데이트나 입력 하나만 적용

MERGE INTO employee e
	USING develop d
    	ON e.id = d.id
    WHEN NOT MATCHEGD THEN
    	INSERT (e.name) VALUES (d.name);
  • 오라클 10 버전 이상부터 사용이 가능
  • ON 조건절에 사용된 컬럼은 UPDATE가 불가능하다.
profile
성장형 인간

0개의 댓글