본문 바로가기

Database/MySQL

[MySQL] UPSERT, INSERT ON DUPLICATE UPDATE 등록 또는 수정

INSERT ON DUPLICATE KEY UPDATE 사용

업무를 하며 INSERT 또는 UPDATE를 하기 위해 DUPLICATE KEY UPDATE를 사용한다.
오라클 DB를 사용할 때는 MERGE INTO를 사용했는데 그 유사한 기능이라고 생각하면 되겠다.
PRIMARY KEY 중복이 발생하게 되면 UPDATE를 실행하게 되고 중복 된 PRIMARY KEY가 없을 경우에는 INSERT 하게 된다.

 

예시 1

INSERT INTO A_TABLE (A,B,C) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE C = C+1;
  
/* UPDATE시 아래와 유사한 동작을 한다 */
UPDATE A_TABLE SET C=C+1 WHERE A=1;

 

예시 2 - Aliases 사용

INSERT INTO A_TABLE (A,B,C) VALUES (1,2,3),(4,5,6) AS new(M,N,P)
  ON DUPLICATE KEY UPDATE C = M+N;

 

간단하면서 직관적이라 사용하기 쉽고 빠르게 처리 할수 있는 방법이라 기록 한다.

 

 

참고사이트

https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html