[sql] MERGE INTO
*기존 데이터가 존재하다면 UPDATE(or DELETE)
기존 데이터가 존재하지 않다면 INSERT을 수행할 수 있는 쿼리 명령문 이다.
기존 데이터가 존재하지 않다면 INSERT을 수행할 수 있는 쿼리 명령문 이다.
*MERGE INTO 쿼리 명령문을 사용하는 기본 틀은 다음과 같다.
MERGE INTO [목적지 테이블]
USING [조건을 확인하는 테이블]
ON [조건]
WHEN MATCHED THEN
["[조건을 확인하는 테이블 및 조건]"에 MATCH되었을 때 수행하는 쿼리]
WHEN NOT MATCHED THEN
["[조건을 확인하는 테이블 및 조건]"]에 MATCH되지 않았을 때 수행하는 쿼리]
["[조건을 확인하는 테이블 및 조건]"]에 MATCH되지 않았을 때 수행하는 쿼리]
*MERGE INTO 쿼리 명령문의 사용 예제
MERGE INTO XRMFT_SHIPTO_MST A
USING DUAL
--*만약 하나의 테이블에서 MERGE INTO을 사용하였을때에는
USING에 "DUAL"테이블을 사용한다. ON ( A.column= @value)
WHEN MATCHED THEN
UPDATE SET A.column= TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS')
, A.column= -2
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
, A.column= @value
WHEN NOT MATCHED THEN
INSERT (
column
, column
, column
, column
, column
, column
, column
, column
, column
, column
, column
, column
, column
, column
, column
, column
)
VALUES
(
@value
, @value
, @value
, @value
, @value
, @value
, @value
, @value
, @value
, @value
, @value
, @value
, -2
, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS')
, -2
, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS')
);
*WHEN MATHCED THEN / WHEN NOT MATCHED THEN 구문은 무조건
(동시에)존재하는 걸까?
(동시에)존재하는 걸까?
NO! 그렇지않다, 사용 의도에 따라 하나만 존재하여도 된다.
MERGE INTO IF_XRMFT_SHIPTO_MST_R B
USING DUAL
ON (
B.column= @value
AND TO_CHAR(B.column, 'YYYYMMDD') =
TO_CHAR(SYSDATE, 'YYYYMMDD')
)
WHEN MATCHED THEN
UPDATE SET B.column= 'Y';
//기본적인 MERGE 사용법은 위와 같다..
//https://thebook.io/006696/part01/ch03/04/
MERGE INTO TABLE_NAME
USING DUAL
ON ( COL = '...' )
WHEN MATCHED THEN
UPDATE SET COL_ = SYSDATE
WHEN NOT MATCHED THEN
INSERT( COL1, COL2 )
VALUES ( 'A','B');
댓글
댓글 쓰기