전부터 함씩 봤던 건데 공부를 안했다 뭔가 어려워보여서
근데 이제 피할 수 없음
그래서 공부하고 진행하기
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 임
아주 간단하쥬?!?!!
'개발 > DB' 카테고리의 다른 글
[MariaDB] 셋팅 및 dump 정리 (1) | 2022.12.29 |
---|---|
[ORACLE] 월별 사용자 COUNT 조회하기 (0) | 2019.08.16 |
[ORACLE] Ibatis 소스와 DB툴 select 쿼리 리턴 결과가 다를 때 (0) | 2019.08.12 |
[ORACLE] 오라클 ORA-02289: 시퀀스가 존재하지 않습니다. (8) | 2019.02.14 |
[ORACLE] NVL, DECODE (0) | 2019.01.01 |