ВСТАВИТЬ… НА КЛЮЧЕВОЙ КЛЮЧ (ничего не делать)

166

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

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 

?

Теги:
unique-key

2 ответа

296
Лучший ответ

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

  • 4
    просто добавить IGNORE после INSERT, остальной синтаксис такой же?
  • 23
    @ufk: INSERT IGNORE без части ON DUPLICATE KEY , например, INSERT IGNORE INTO xpo.user_permanent_gift (...) VALUES (...)
Показать ещё 11 комментариев
0

Используйте ON DUPLICATE KEY UPDATE...,
Отрицательный: потому что UPDATE использует ресурсы для второго действия.

Используйте INSERT IGNORE...,
Отрицательный: MySQL не будет показывать никаких ошибок, если что-то пойдет не так, поэтому вы не можете обработать ошибки. Используйте его, только если вы не заботитесь о запросе.

  • 0
    @abdul есть ли поддержка mysql, что вы здесь объяснили?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню