into절 | 갱신 or 삽입할 타깃 테이블 |
using절 | 갱신 or 삽입에 사용할 소스 테이블 |
on | 갱신 or 삽일을 결정하는 조건 |
merge update | 조건을 만족 하는 경우 수행 |
merge insert | 조건을 만족하지 않는 경우 수행 |
Merge
into target_table
using source_table
on ( 조건)
when matched then -- update 절
update
set column = , column = ...
where 조건
[ delete -- 10.1 version부서 merge update절에 delete 기술(update절로 갱신된 행을 대상으로 수행)
where 조건 ] -- 갱신된 값을 기준으로 행을 삭제.
when not matched then -- insert 절
insert column ...
values ( ... )
where 조건
[예제] PL-SQL DEVELOPER에서 MERGE문 사용 예제.
입력받은 MEMBER_ID, BRAND 조건으로 TA_CUST의 ADDR(주소), TELNO(전화번호) UPDATE OR INSERT.
MERGE
INTO TA_CUST A
USING (SELECT V_MEMBER_ID MEMBER_ID,
V_BRAND BRAND,
V_ADDR ADDR,
V_TELNO TELNO
FROM DUAL) B -- 테이블 대신 dual을 이용하여 source table 만듦
ON (A.MEMBER_ID = B.MEMBER_ID AND A.BRAND = B.BRAND) -- 조건
WHEN MATCHED THEN
UPDATE
SET A.ADDR = B.ADDR,
A.TELNO = B.TELNO
WHEN NOT MATCHED THEN
INSERT
(A.MEMBER_ID,
A.BRAND,
A.ADDR,
A.TELNO)
VALUES
(B.MEMBER_ID,
B.BRAND,
B.ADDR,
B.TELNO);