我有一个带有两列唯一键的表:
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
?
是的,使用INSERT ... ON DUPLICATE KEY UPDATE id=id(即使id已分配给自身,它也不会触发行更新)。
INSERT ... ON DUPLICATE KEY UPDATE id=id
id
如果您不关心错误(转换错误,外键错误)和自动递增字段用尽(即使由于重复键而未插入行,它也会增加),请使用INSERT IGNORE。
INSERT IGNORE