테이블에 데이터가 이미 있으면 업데이트, 없으면 값을 삽입해야 하는 경우가 있는데
1. 데이터가 있는지 확인
2. 데이터가 있으면 UPDATE
3. 데이터가 없으면 INSERT
3개를 선언하는 것은 번거롭다.
이럴 때, Oracle MERGE INTO
활용!
MERGE INTO [TABLE / VIEW] // update 또는 insert할 테이블 혹은 뷰
USING [TABLE / VIEW / DUAL] // 비교할 대상 테이블 혹은 뷰 (위 테이블과 동일할 경우 DUAL을 사용)
ON [조건] // UPDATE 와 INSERT 처리할 조건문 (조건이 일치하면 UPDATE / 불일치 시 INSERT)
WHEN MATCHED THEN
UPDATE
SET
[COLUMN1] = [VALUE1],
[COLUMN2] = [VALUE2],
...
(DELETE [TABLE] WHERE [COLUMN 1] = [VALUE 1] AND ...) // UPDATE 뿐만 아니라 DELETE 구문도 사용 가능
WHEN NOT MATCHED THEN
INSERT (COLUMN1, COLUMN2, ...)
VALUES (VALUE1, VALUE2, ...)
테이블에 row
가 존재하면 UPDATE
를 수행하고 row
가 존재하지 않으면 INSERT
를 하지 않는 경우에는, WHEN NOT MATCHED THEN
절을 빼면 된다.