디비이야기 21. MERGE문
1. MERGE INTO
= 조건을 비교하여 IF NOT이면 INSERT / IF IS이면 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 실행
EX) MERGE INTO ex3_3 d
USING (SELECT employee_id, salary, manager_id
FROM employees
WHERE manager_id = 146) b
on (d.employee_id = b.employee_id)
WHEN MATCHED THEN
UPDATE SET d.bonus_amt = d.bonus_amt + b.salary * 0.01
DELETE WHERE (B.employee_id = 161)
WHEN NOT MATCHED THEN
INSERT (d.employee_id, d.bonus_amt) VALUES (b.employee_id, b.salary *.001)
WHERE (b.salary < 8000);
* USING ON에서 중복체크를 해준다