본문 바로가기
MySQL

INSERT 중복키 문제 처리

by suhsein 2024. 11. 5.
728x90

INSERT 중복키 문제 처리

만약 INSERT를 할 때 삽입하는 데이터의 키가 중복키라면 삽입이 되지 않는다. 또한 오류가 발생한 쿼리 이후의 쿼리들도 실행되지 않는다.

INSERT INTO 테이블명 VALUES(값1, 값2, 값3);
INSERT INTO 테이블명 VALUES(값4, 값5, 값6);
INSERT INTO 테이블명 VALUES(값7, 값8, 값9);

만약 값1이라는 키가 이미 존재한다면, 첫번째 쿼리가 실행되지 않는다. 그리고 두번째, 세번째 쿼리까지 모두 실행이 되지 않을 것이다.

이에 대한 핸들링 방법은 두가지가 있다.

1. IGNORE

INSERT IGNORE INTO 테이블명 VALUES(값1, 값2, 값3);
INSERT IGNORE INTO 테이블명 VALUES(값4, 값5, 값6);
INSERT IGNORE INTO 테이블명 VALUES(값7, 값8, 값9);

IGNORE를 사용하면, 문제가 발생한 쿼리를 무시하고 이후의 쿼리들은 오류를 무시한 채 실행된다.
그렇기 때문에 첫번째 쿼리는 실행되지 않을 것이고, 두번째, 세번째 쿼리는 실행이 된다.

2. ON DUPLICATE KEY UPDATE

INSERT INTO 테이블명 VALUES(값1, 값2, 값3)
  ON DUPLICATE KEY UPDATE 컬럼2 = 값2, 컬럼3 = 값3;
INSERT INTO 테이블명 VALUES(값4, 값5, 값6)
  ON DUPLICATE KEY UPDATE 컬럼2 = 값5, 컬럼3 = 값6;

INSERT문 실행 시 중복키가 존재한다면 값을 업데이트 하도록 할 수도 있다.
만약 중복키가 존재하지 않는 경우에는 INSERT만 실행하게 된다.

728x90