Вставить ... на дубликат ключа (ничего не делать)


у меня есть таблица с уникальным ключом для двух столбцов:

CREATE  TABLE `xpo`.`user_permanent_gift` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`fb_user_id` INT UNSIGNED NOT NULL ,
`gift_id` INT UNSIGNED NOT NULL ,
`purchase_timestamp` TIMESTAMP NULL DEFAULT now() ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `user_gift_UNIQUE` (`fb_user_id` ASC, `gift_id` ASC) );

Я хочу, чтобы вставить строку в таблицу, но если ключ существует, ничего не делать! Я не хочу, чтобы создавалась ошибка, потому что ключи существуют.

Я знаю, что есть следующий синтаксис:

INSERT ... ON DUPLICATE KEY UPDATE ...

но есть что-то вроде:

INSERT ... ON DUPLICATE KEY DO NOTHING 

?

2 163

2 ответа:

Да, есть INSERT IGNORE, или вы можете сделать ON DUPLICATE KEY UPDATE id=id.

Пожалуйста, Используйте INSERT ... ON DUPLICATE KEY IGNORE

Я не рекомендую использовать ON DUPLICATE KEY UPDATE ... или INSERT IGNORE потому что обновление использовать ресурс для других действий, и INSERT IGNORE только используйте, если вы не заботитесь об этом запросе, потому что mysql не отправляет ошибка, если вы вставляете что-то и не можете ничего хендлинг!