Database

MERGE문 사용해 INSERT, UPDATE 처리하기

:_: 2021. 6. 29. 13:36

 

MERGE 

변경할 테이블에 데이터가 있는지 확인 하고 insert , update 를 한번에 처리 할 수 있다.

 

MERGE INTO 변경할 테이블
USING (select 1 as dummy) a
ON 비교할 조건
WHEN MATCHED THEN
UPDATE SET 칼럼 = '값'     // 조건 만족하는 데이터가 있는 경우 
WHEN NOT MATCHED THEN 
INSERT (칼럼) VALUES (값);   // 조건 만족하는 데이터가 없는 경우

 

* MERGE 문은 세미콜론(;)으로 종료해야 한다. 

 

 

EX. 

 

SELECT * FROM kkk_test;

 

- MERGE 사용해서 update 해보기

MERGE INTO kkk_test as a
USING (SELECT 1 AS dual) AS b
ON (a.id=71) 
WHEN MATCHED THEN
update SET a.username='홍길동'
WHEN NOT MATCHED THEN
insert (userid, username, phone, email, address, contents) 
VALUES ( 'test1234', '홍길동' , '01012345678', 'test@test.com', '서울', 'test');

 

id가 71인 데이터가 있으므로 username 이 admin에서 홍길동으로 update 된 내용 확인

 

 

- MERGE  사용해서 insert 해보기

MERGE INTO kkk_test as a
USING (SELECT 1 AS dual) AS b
ON (a.id=72) 
WHEN MATCHED THEN
update SET a.username='홍길동'
WHEN NOT MATCHED THEN
insert (userid, username, phone, email, address, contents) 
VALUES ( 'test1234', '홍길동' , '01012345678', 'test@test.com', '서울', 'test');

id 가 72인 데이터가 없었으므로 insert 된 내용 확인!

 

728x90