DataBase

[Database] UPSERT에 대해

범데이 2022. 11. 15. 00:22

1. UPSERT란?

UPSERTUPDATE + INSERT의 합성어이다.

 

풀어서 설명하자면, DB의 데이터를 다룰 때 INSERT혹은 UPDATE를 할 때가 있는데,

INSERT를 하고자 하는 데이터가 기존에 있을 경우, PRIMARY KEY가 중복되어 INSERT가 실패가 나게 되는데,

이럴때는 UPDATE가 동작하게 처리하는 것을 UPSERT라고 한다.

 

 

2. UPSERT구문

[MYSQL]

INSERT INFO [table_name] ([col1], [col2]) VALUES ('[value1]', '[value2]') ON DUPLICATE KEY UPDATE '[col2]' = '[value2]';

쿼리의 생김새도 INSERT쿼리와 UPDATE쿼리를 섞어놓은 것 같다.

 

 

[ORACLE]

MERGE INFO [table_name] [alias]
  USING (source_table_name or view or subquery) [alias]
  ON (join condition)
WHEN MATCHED THEN
  UPDATE SET col1 = value1[, col2 = value2...]
WHEN NOT MATCHED THEN
  INSERT [(col1, col2, ... coin)] VALUES(value1, value2 ... valuen)

 

 

위와같이 쿼리를 실행하면, 데이터가 존재하지 않을 경우, 새 데이터가 생성이 되고, 데이터가 이미 존재하는 경우에는 바꿀 값만 업데이트가 된다.

반응형