만약 INSERT를 할 때 삽입하는 데이터의 키가 중복키라면 삽입이 되지 않는다. 또한 오류가 발생한 쿼리 이후의 쿼리들도 실행되지 않는다.
INSERT INTO 테이블명 VALUES(값1, 값2, 값3);
INSERT INTO 테이블명 VALUES(값4, 값5, 값6);
INSERT INTO 테이블명 VALUES(값7, 값8, 값9);
만약 값1이라는 키가 이미 존재한다면, 첫번째 쿼리가 실행되지 않는다. 그리고 두번째, 세번째 쿼리까지 모두 실행이 되지 않을 것이다.
이에 대한 핸들링 방법은 두가지가 있다.
INSERT IGNORE INTO 테이블명 VALUES(값1, 값2, 값3);
INSERT IGNORE INTO 테이블명 VALUES(값4, 값5, 값6);
INSERT IGNORE INTO 테이블명 VALUES(값7, 값8, 값9);
IGNORE를 사용하면, 문제가 발생한 쿼리를 무시하고 이후의 쿼리들은 오류를 무시한 채 실행된다.
그렇기 때문에 첫번째 쿼리는 실행되지 않을 것이고, 두번째, 세번째 쿼리는 실행이 된다.
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만 실행하게 된다.