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를 넣는다
'DB Oracle' 카테고리의 다른 글
[Oracle] 테이블 복사, tablespace 생성 (0) | 2024.10.21 |
---|---|
[Oracle] DB 넣을 시 참고 - 기본키, 날짜 (0) | 2024.09.07 |
[DB] SQL 문제 (0) | 2024.08.31 |
[Oracle] 데이터베이스 설계 (0) | 2024.04.09 |
[Oracle] WITH AS (0) | 2024.04.09 |