NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Database [Oracle] 데이터 유무에 따라 Insert, Update 한번에 처리하기. (MERGE INTO)

    페이지 정보

    본문

    표준(2003) ANSI에 MERGE INTO 쿼리가 있습니다. 이 쿼리를 이용하면 특정 테이블의 데이타를 조회한 후 있으면 업데이트하고, 없으면 인서트하는 구문입니다. 좀 더 쉽게 쿼리를 만들기 위해 사용됩니다. 물론, 일반 쿼리문으로도 작성할 수 있긴하지만... 이게 더 쉽고 간단하죠^^; 

    /* Formatted on 2019/09/24 오전 9:36:48 (QP5 v5.256.13226.35510) */
    MERGE INTO member_status_hst_fwc
         USING DUAL
            ON (
                framework_rawid = #{rawID} 
                and status = #{status} 
                and rawid = 
                    (select max(rawid) from member_status_hst_fwc 
                    where framework_rawid = #{rawID}))
               when not matched then
                insert (
                rawid, 
                framework_rawid, 
                framework_set_id, 
                framework_id, 
                member_id, 
                member_type, 
                server_ip, 
                status, 
                previous_status, 
                description, 
                create_by)
                values (
                seq_member_status_hst_fwc.nextval, 
                #{rawID}, 
                #{frameworkSetID}, 
                #{frameworkID}, 
                #{memberID}, 
                substr(#{memberType}, 0, 1), 
                #{machineIP}, 
                #{status}, 
                #{previousStatus}, 
                #{description}, 
                #{createBy})

     

    이 쿼리는 스프링 환경에서 MyBatis로 작성된 내용입니다. 파라미터만 :PARAMETER로 변경해서 사용하면 됩니다. 조건에 서브 쿼리도 되고, 위 예제처럼 인서트와 업데이트 하나만 사용할 수도 있습니다. 아래는 SYNTAX입니다.

    MERGE INTO 주로 테이블 USING 서브 테이블 ON (조건)
       WHEN MATCHED THEN
         UPDATE SET 컬럼1 = 값1 [, 컬럼2 = 값2 ...]
       WHEN NOT MATCHED THEN
         INSERT (컬럼1 [, 컬럼2 ...]) VALUES (값1 [, 값2 ...])

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천1 비추천0

    댓글목록

    등록된 댓글이 없습니다.