Programming/SQLP

Merge문

초록깨비 2021. 4. 20. 12:41
728x90
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);

728x90