728x90
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)
위와같이 쿼리를 실행하면, 데이터가 존재하지 않을 경우, 새 데이터가 생성이 되고, 데이터가 이미 존재하는 경우에는 바꿀 값만 업데이트가 된다.
반응형
'DataBase' 카테고리의 다른 글
[SQL] Inner Join에서 조인 조건이 같을 시, 테이블 순서의 영향이 있을까? (0) | 2023.07.10 |
---|---|
[Database] ACID(원자성, 일관성, 고립성, 지속성) (0) | 2023.05.21 |
[Database] ORM에 대해 (0) | 2022.08.20 |
SQLD(SQL Developer) 자격증이란? / 자격증 취득 후기 (0) | 2022.04.15 |