오라클 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);