Jiniya

WEB

[MySQL]값이 없으면 Insert, 값이 있으면 Update - on duplicate key update

INTRO


테이블을 생성 후, 중복 저장을 막기 위해 name에 unique키를 등록한다.

데이터베이스에서 대량의 데이터를 등록할 경우, 키 값이 있음에도 Insert문을 실행하게 되면 에러가 발생한다. 해결방법으로 테이블에 있는 데이터를 모두 삭제한 후 다시 집어넣는 방법이외에도 많겠지만 그것은 번거롭기도하며 위험요소도 생긴다. 

따라서 키값이 있는 경우는 Insert가 아닌 Update를 해주는 방법을 사용하면 번거로운 일도 줄이고 에러도 줄일 수 있다.




테이블 준비


테이블을 생성 후, 중복 저장을 막기 위해 name에 unique키를 등록한다.

DROP   TABLE   tb_member;
CREATE   TABLE   tb_member (
       mem_name  VARCHAR (30)
     , mem_job  VARCHAR (30)
);
ALTER   TABLE   member  ADD   UNIQUE   (mem_name);



ON DUPLICATE KEY UPDATE 사용 


INSERT INTO tb_member (

      mem_name

    , mem_job

) VALUES (

      '홍길동'

    , '기획자'

)

ON DUPLICATE KEY UPDATE

    mem_job = '개발자';

 

 

위의 쿼리를 실행한 후, member 테이블을 조회하면 이름이 '홍길동'이고 직업이 '기획자'인 데이터가 추가된 것을 확인할 수 있다.

확인 후, 다시 위의 쿼리를 실행하면 그때는 '기획자'였던 홍길동의 직업이 '개발자'로 변경된 것을 확인할 수 있다.