반응형

INTRO

 

member라는 테이블을 생성 후, 중복 저장을 막기 위해 name에 unique(or primary key)키를 등록한다.

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

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

 

 

테이블 준비

 

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

DROP TABLE member;
CREATE TABLE member (
     name VARCHAR(30)
    ,job VARCHAR(30)
);
ALTER TABLE member ADD UNIQUE (name);

 

 

ON DUPLICATE KEY UPDATE 사용 

INSERT INTO member (
      name
    , job
) VALUES (
      'CROCUS'
    , '개발자'
)
ON DUPLICATE KEY UPDATE
    job = '실무자';
 

위의 쿼리를 총 2번 실행해보자.

 

처음에는 CROCUS라는 name이 테이블에 없으므로 중복값 처리 없이 그대로 CROCUS, 개발자가 들어갈 것이다.

하지만 두번째 쿼리때는 CROCUS가 존재하므로 개발자->실무자 로 업데이트 되어 테이블에 들어가게 될 것이다. 

 

반응형