小编典典

插入…在重复键上(不执行任何操作)

mysql

我有一个带有两列唯一键的表:

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


阅读 263

收藏
2020-05-17

共1个答案

小编典典

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

如果您不关心错误(转换错误,外键错误)和自动递增字段用尽(即使由于重复键而未插入行,它也会增加),请使用INSERT IGNORE

2020-05-17