본문 바로가기

개발/DB

[ORACLE] MERGE INSERT UPDATE 문

 

전부터 함씩 봤던 건데 공부를 안했다 뭔가 어려워보여서

근데 이제 피할 수 없음

 

그래서 공부하고 진행하기

 

MERGE는 아주 간단하게 조건에 해당될 때 INSERT, UPDATE, DELETE를 알아서 치도록 만드는 문법임

 

예를 들어 어떤 경우에 사용하냐 함은 

어떤 데이터를 테이블에 넣을 건데

만약 이미 데이터가 존재하면 UPDATE, 존재하지 않으면 INSERT를 하고 싶을 때 임

 

만약에 이런 경우에 MERGE를 사용을 안하면

SELECT를 하고 UPDATE로 가던지 INSERT로 가던지 쓸데 없이 DAO가 많아지고, 그걸 만들어야 하는 나는 귀찮아짐

 


내 예문

A_TABLE = 컨텐츠가 들어있는 테이블이라 치자

 

MERGE INTO A_TABLE AS A -- 기준이 되는 테이블임

USING DUAL -- 여기에 테이블이나 뷰나 쿼리가 들어가도 됨 EX) B_TABLE AS B

    ON (A.CONTENTS_ID = #{contentsId} AND A.NAME = {#name})

-- JOIN 조건 주는 ON절 (여기에서 2번째 테이블과 데이터 비교해도 됨 EX) A.NAME = B.NAME )

WHEN MATCHED THEN -- 조건이 맞으면~

    UPDATE

       SET CONTENTS = #{contents},

            UPD_USERID = #{upd_userId},

            UPD_DATE = #{upd_date}

 -- DELETE문도 사용 가능함 그리고 테이블 이름 생략 가능~

 -- DELETE WHERE CONTENTS_ID = #{contentsId}

WHEN NOT MATCHED THEN -- 조건 안맞으면~

     INSERT ( -- INSERT 할 때에는 'INTO 테이블이름' 이 생략 가능함~

       CONTENTS_ID, NAME, CONTENTS, REG_USERID, REG_DATE 

     ) VALUES (

       #{contentsId}, #{name}, #{contents}, #{reg_userId}, #{reg_date}

     )

 

 

CONTENTS_ID랑 NAME이 PRIMARY KEY라는 가정하에

페이지에서 넘어온 데이터와 비교 했을 때

일치하는 데이터가 있으면 UPDATE, 없으면 INSERT 임

 

아주 간단하쥬?!?!!

 

 

반응형