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 ...])
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
추천1 비추천0
- 이전글RPA (Robotic Process Automation)는 무엇일까? 21.06.01
- 다음글맥북에서 시스템 언어 변경하기. (Changing the system language on the MacBook.) 21.05.30
댓글목록
등록된 댓글이 없습니다.