Study

[MySQL] INSERT 시 ON DUPLICATE KEY UPDATE

즐거운개발 2022. 7. 15. 20:54

 

INSERT 쿼리 시 PK가 중복되는 경우가 있다.

에러를 방지하기 위해 여러 옵션을 적용할 수 있는데, 그 중 유용한 옵션이 'ON DUPLICATE KEY UPDATE' 다.

다음과 같이 'name'이 PK인 테이블이 있다고 하자.

[파워 테이블]

이름이 '민수'인 row의 power가 이상하다. '엄청 강'이 아닌, '엄청 강함'으로 수정되어야 한다.

UPDATE문을 쓸 수도 있겠지만, 데이터양이 크다면 일일이 조건을 걸어 수정하기도 어렵다.

이 때 전체 데이터를 통째로 INSERT하고, PK가 겹친다면 다른 컬럼값을 자동으로 업데이트해주는 기능이 위의 옵션이다.

 

INSERT INTO teset VALUES('민수', '36', '엄청 강함')
ON DUPLICATE KEY UPDATE power=VALUES(power);

위와 같이 ON DUPLICATE KEY UPDATE 뒤에 [컬럼]=VALUES([컬럼])을 붙이면 된다.

PK가 중복될 경우 뒤에 적은 컬럼의 값을 UPDATE 해주므로 유용하게 쓸 수 있다.

쿼리 실행 결과 아래와 같이 정상적으로 변경되어 INSERT되었다.