Игнорировать дубликат первичного ключа - PullRequest
0 голосов
/ 11 января 2012

У меня есть массив из почти 5000 объектов, которые я ввожу в базу данных MySQL.

Массив имеет индекс 'crn', а соответствующий столбец в таблице MySQL является первичным ключом.

Можно ли как-то сказать mysql, чтобы он пропускал запись, если она обнаруживает дублированный первичный ключ, а не останавливает выполнение скрипта?

Я мог бы проверить таблицу перед вставкой каждой строки, но так как я ожидаю только 1 или 2 дубликата среди 5000 или около того объектов, кажется, это окажется очень дорого.

Ответы [ 2 ]

6 голосов
/ 11 января 2012

Используйте INSERT IGNORE вместо INSERT

1 голос
/ 11 января 2012

Как сказал @KingCrunch, INSERT IGNORE может сделать это за вас.

Если вам, однако, необходимо знать о дубликатах, вы можете рассмотреть возможность вставки ... ОБНОВЛЕНИЕ КЛЮЧЕВОГО КЛЮЧА

См. http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

...