본문 바로가기
database/mysql

[MySQL] insert ... on duplicate key update (upsert)

by moonsiri 2020. 11. 1.
728x90
반응형

INSERT ... ON DUPLICATE KEY UPDATE Statement

insert 하려는 값이 존재하면 update 하는 쿼리입니다.

 


user라는 테이블에 insert를 하려고합니다.

INSESRT INTO user (id, name, age) VALUES ('user1', '홍길동', 20);

 

그런데 이미 'user1'이 존재한다면 에러가 날것입니다.

여기서 'user1'에 새 값으로 수정 하고싶으면, update를 해야합니다.

UPDATE user SET name='홍길동', age=20 WHERE id='user1';

 

 

개발을 하다보면 데이터가 존재하는지 체크하고 없으면 insert하고 있으면 update하는 기능을 구현할때가 종종 있을것입니다.

그럴때 사용하는 것이 INSERT ... ON DUPLICATE KEY UPDATE 문입니다.

데이터가 존재하는지 체크할 필요없이 값이 있으면 update를 해주고 없으면 insert를 해줍니다.

 

INSESRT INTO user (id, name, age) VALUES ('user1', '홍길동', 20)
  ON DUPLICATE KEY UPDATE name='홍길동', age=20;

 

 

참고로 upsert하면 Java에서 insert한 값은 1이 리턴되고 duplicate로 update한 값은 2가 리턴됩니다.

728x90
반응형

댓글