DB Oracle
[Oracle] MERGE 구문
아잠만_
2024. 9. 27. 19:18
MERGE INTO STOCK S -- STOCK테이블을 업데이트할 대상으로 설정
USING (SELECT GDS_CODE, BZENT_NO, QTY -- USING절을 통해 STOCK테이블과 연결할 데이터 소스 정의
FROM STOCK_PO
WHERE PO_NO = #{poNo}) SP
ON (S.GDS_CODE = SP.GDS_CODE AND S.BZENT_NO = -- 조인 조건
(SELECT BZENT_NO FROM PO WHERE PO_NO = #{poNo}))
WHEN MATCHED THEN -- 조인 조건이 일치하는 경우에 수행
UPDATE SET S.QTY = S.QTY + SP.QTY
WHEN NOT MATCHED THEN -- 조인 조건이 일치하는 않는 경우에 수행
INSERT (GDS_CODE, BZENT_NO, QTY)
VALUES (SP.GDS_CODE, (SELECT BZENT_NO FROM PO WHERE PO_NO = #{poNo}), SP.QTY);
MERGE INTO 는 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야되는 경우에 사용한다
오라클 9i부터 사용할 수 있으며 DELETE문은 10g부터 사용할 수 있다
단일 MERGE문을 사용시에 USING절에 DUAL을 넣어 ON 조건문을 써서 UPDATE나 INSERT를 넣는다