게시일: Jan 01, 2012 11:12:41 PM
- 하나의 SQL에서 INSERT와 UPDATE를 동시에 처리할 수 있다.
- Oracle에서만 지원
[구문 형식]
MERGE INTO 대상 테이블
USING ( 원본 테이블 )
ON ( 조건 )
merge_update 절
merge_insert 절;
대상 테이블 : INSERT나 UPDATE 대상이 되는 테이블
원본 테이블 : 입력 및 수정 대상 테이블과 조건을 비교할 테이블이나 뷰, 서브쿼리 등
조건 : 대상 테이블과 원본 테이블과의 비교 조건으로, 조건을 만족하면 update를, 만족하지 않으면 insert를 실행한다.
merge_update 절
WHEN MATCHED THEN UPDATE SET ...
DELETE WHERE ...
merge_insert 절
WHEN NOT MATCHED THEN INSERT (col....) VALUES (val....) WHERE ...
MERGE INTO merge_test d
USING ( select * from employees where department_id <= 50 ) s
ON ( d.employee_id = s.employee_id )
WHEN MATCHED THEN update set d.sal = 10000
WHEN NOT MATCHED THEN insert ( employee_id, names, sal )
values ( s.employee_id, s.first_name||' '||s.last_name, s.salary )
where s.department_id < 50;