반응형
merge를 이용한 update, insert, delete
조건에 따라 데이터를 insert하거나 update를 하는 기능 제공
MERGE INTO emp c <-- 원래 테이블
USING (select 8000 empno,
'DENNIS' ename,
'SALESMAN' job,
7693 mgr,
'99/01/22' hiredate,
1700 sal,
200 comm,
30 deptno
from dual)e <-- 테이블의 저장될 데이터를 컬럼과 매칭하여 dual를 이용해 명시함
on (c.empno = e.empno) <-- primary key를 명시함
WHEN MATCHED THEN <-- 중복되는 primary key가 있으면 update
UPDATE SET
c.ename = e.ename, <- 테이블 알리아스 e는 dual를 가리키기 때문에 dual에 명시한 데이터를 호출함
c.job = e.job,
c.mgr = e.mgr,
c.hiredate = e.hiredate,
c.sal = e.sal,
c.comm = e.comm,
c.deptno = e.deptno
WHEN NOT MATCHED THEN <-- 중복되는 primary key가 없으면 insert
INSERT (c.empno,c.ename,c.job,c.mgr,c.hiredate,c.sal,c.comm,c.deptno)
VALUES (e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno);
중복되는 데이터가 있을 때 delete하는 기능은 10g부터 지원
반응형
'oracle' 카테고리의 다른 글
오라클에서 누적 합계 구하는 함수 sum over 사용하기 (0) | 2018.07.12 |
---|---|
오라클 드라이버 ojdbc6 메이븐 설정 (0) | 2017.08.21 |
connect by를 이용한 계층형 게시판 SQL (0) | 2017.04.05 |
오라클 레코드(row) 랜덤 추출 (0) | 2016.10.27 |
eclipse Amateras ERD 다운로드 및 설치하기 (0) | 2016.09.08 |