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되었다.