小编典典

INSERT ... ON DUPLICATE KEY(什么都不做)

all

我有一个包含两列唯一键的表:

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

?


阅读 121

收藏
2022-06-11

共1个答案

小编典典

是的,使用INSERT ... ON DUPLICATE KEY UPDATE id=id(即使id分配给它自己也不会触发行更新)。

如果您不关心错误(转换错误、外键错误)和自动增量字段耗尽(即使由于重复键未插入行也会增加),然后INSERT IGNORE像这样使用:

INSERT IGNORE INTO <table_name> (...) VALUES (...)
2022-06-11