DataBase
[Database] UPSERT에 대해
범데이
2022. 11. 15. 00:22
1. UPSERT란?
UPSERT는 UPDATE + 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)
위와같이 쿼리를 실행하면, 데이터가 존재하지 않을 경우, 새 데이터가 생성이 되고, 데이터가 이미 존재하는 경우에는 바꿀 값만 업데이트가 된다.
728x90
반응형