반응형
안녕하세요.
오늘은 MERGE 구문을 살펴볼겁니다.
MERGE 구문은 시스템에서 INSERT, UPDATE 를 한번에 사용하게 해주는 구문이며,
DB에서 INSERT와 UPDATE를 구분해주므로 소스에서 이 데이터가 INSERT인지 UPDATE 인지 구분할 필요가 없어 소스의 가독성을 높여줍니다.
즉, 개발자는 비지니스 로직에만 집중할 수 있도록 도와 줍니다.
이해하기 쉽도록 이미지로 설명을 하였습니다. 아래 이미지 참고하시면 됩니다.
소스는 아래쪽에 있습니다.
<이미지 설명>
<소스>
MERGE INTO EMPLOYEE C --INSERT, UPDATE 할 기준 테이블
USING
(
SELECT USERNO
, USERNAME
, ADDRESS
, PHONE
FROM EMPLOYEE_TEMP
WHERE INPUT_DATE = '20191105'
) N
ON ( C.USERNO = N.USERNO) --INSERT 할지, UPDATE 할지 비교하는 구문입니다.
WHEN MATCHED THEN -- C테이블에 N쿼리에서 조회한 USERNO가 존재하면
--UPDATE 수행
UPDATE
SET C.USERNAME = N.USERNAME
, C.ADDRESS = N.ADDRESS
, C.PHONE = N.PHONE
WHEN NOT MATCHED THEN -- C테이블에 N쿼리에서 조회한 USERNO가 존재하지 않는다면
--INSERT 수행
INSERT ( USERNO
, USERNAME
, ADDRESS
, PHONE
)
VALUES (
N.USERNO
, N.USERNAME
, N.ADDRESS
, N.PHONE
)
감사합니다!
반응형
'개발 > 오라클' 카테고리의 다른 글
[Oracle] 오라클 조건절/CASE구문/DECODE구문 (0) | 2020.03.31 |
---|---|
[Oracle] 오라클 날짜 포맷/날짜 연산/ 날짜 계산 (0) | 2020.03.31 |
[Oracle] 오라클 SUBSTR(문자열 자르기) / INSTR(문자열위치) 응용 (0) | 2020.03.31 |
[Oracle] 오라클 테이블 컬럼 추가/수정/삭제/컬럼명 변경(ALTER 테이블ADD/MODIFY/DROP/RENAME) (0) | 2020.03.31 |
[Oracle]오라클 LOCK 조회 및 해제 (0) | 2020.03.31 |
댓글