본문 바로가기
MySQL

[MySQL] 데이터 삽입시에 Primary Key(PK)나 Unique Key(UK)가 중복되었을 때 지정된 데이터를 업데이트하는 법 ON DUPLICATE KEY UPDATE

by dong_su 2024. 5. 27.

ON DUPLICATE KEY UPDATE

-> 데이터 삽입 시에 Primary Key(PK)나 Unique Key(UK)가 중복되었을 때 지정된 데이터를 업데이트하는 명령어입니다.

주로 이 명령어는 데이터베이스에 데이터를 삽입할 때 중복된 키가 발생할 수 있는 경우에 사용됩니다. 이때, 중복된 키가 발생하면 해당 키에 대한 데이터를 업데이트하고, 중복된 키가 없는 경우에는 새로운 데이터를 삽입합니다.

 

예시)

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

여기서 "id"가 Primary Key로 정의되어 있습니다. 이제 이 테이블에 데이터를 삽입할 때 "id"가 중복되는 경우에는 해당 데이터의 "age"를 업데이트하는 예제를 살펴보겠습니다.

 

INSERT INTO users (id, name, age) VALUES (1, 'John', 30) 
    ON DUPLICATE KEY UPDATE age = VALUES(age);

주어진 INSERT 쿼리문은 다음과 같은 동작을 수행합니다.

  • 만약 "id"가 1인 레코드가 이미 테이블에 존재한다면, 해당 레코드의 "age"를 30으로 업데이트합니다.
  • 만약 "id"가 1인 레코드가 테이블에 존재하지 않는다면, 새로운 레코드를 삽입합니다.

따라서 "id"가 1인 레코드가 이미 존재한다면 해당 레코드의 "age"가 30으로 업데이트됩니다.