본문 바로가기

oracle

merge를 이용한 update, insert, delete

반응형
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부터 지원


반응형