[Mysql] insert시 데이터가 이미 존재하면 update 하는 방법 (upsert문)

이종현·2022년 7월 4일
0

DB

목록 보기
8/13

upsert문

업무 진행할때 특정 데이터를 insert 하거나 혹은 update하게끔 로직을 짜야 하는 경우가 많다.

이때보통 테이블을 조회해서 레코드가 존재하면 update문을 존재하지 않으면 insert문을 수행하는 로직으로 진행해왔다.

이러면 코드가 길어지고, sql문을 2번 수행한다는 문제가 있다.

  • 기존 방식

이런 문제를 해결할수 있는게 UPSERT 방식이다.

이름에서 유추할수 있듯 데이터가 있으면 Update문 , 없으면 Insert문을 수행하는 방식이다.

사용 방법

사용 방법은 insert문 뒤에 ON DUPLICATE KEY UPDATE를 붙이고 UPDATE문 SET절의 구문을 적어주면 된다.

INSERT INTO 테이블명
( 컬럼명 , 컬럼명 , … )
VALUES
( 값 , 값 , … )
ON DUPLICATE KEY UPDATE
컬럼 = 값,
컬럼 = 값,

예시

아래 테이블의 ID값이 1인 레코드의 info값을 info3으로 변경한다.

  • 테스트 테이블

  • UPSERT문

  • 수행 결과

profile
백엔드 개발자의 소소한 개발 기록.

1개의 댓글

comment-user-thumbnail
2022년 7월 4일

좋은 글입니다!!! 이해하기가 아주 쉽습니다 !

답글 달기