Как не работать, если возникает исключение дубликата ключа? - PullRequest
3 голосов
/ 08 марта 2011

Я знаю, что могу использовать ON DUPLICATE KEY UPDATE и затем выполнить операцию no-op в MySQL, если возникает исключение дублирования, но есть ли более эффективный способ?

Ответы [ 2 ]

1 голос
/ 03 апреля 2015

Хотя это правда, я обнаружил, что выполнение INSERT IGNORE создает дыры в ваших идентификаторах автоинкремента. В частности, если вы делаете INSERT IGNORE и оно сталкивается с текущей строкой, данные не записываются (что вы хотите), НО значение auto_increment для этой таблицы увеличивается на единицу.

Если вы такой же наркотик, как я, дыры в столбцах автоинкремента убивают вас. Поэтому я склонен этого не делать. Я просто делаю что-то вроде:

INSERT INTO TABLE (column list) VALUES (value list) ON DUPLICATE KEY UPDATE random_column = random_column

Это успешно делает no-op. Это просто вопрос стиля, но я думаю, что этот метод чище.

1 голос
/ 08 марта 2011
INSERT IGNORE INTO tableName ....

см. Документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...