Хотя это правда, я обнаружил, что выполнение INSERT IGNORE
создает дыры в ваших идентификаторах автоинкремента. В частности, если вы делаете INSERT IGNORE
и оно сталкивается с текущей строкой, данные не записываются (что вы хотите), НО значение auto_increment для этой таблицы увеличивается на единицу.
Если вы такой же наркотик, как я, дыры в столбцах автоинкремента убивают вас. Поэтому я склонен этого не делать. Я просто делаю что-то вроде:
INSERT INTO TABLE (column list) VALUES (value list) ON DUPLICATE KEY UPDATE random_column = random_column
Это успешно делает no-op. Это просто вопрос стиля, но я думаю, что этот метод чище.