我有一个包含两列唯一键的表:
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
INSERT IGNORE INTO <table_name> (...) VALUES (...)