ufk*_*ufk 175 mysql sql unique-key
我有一个表,其中包含两列唯一键:
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) );
Run Code Online (Sandbox Code Playgroud)
我想在该表中插入一行,但如果该键存在,则什么都不做!我不希望生成错误,因为密钥存在.
我知道有以下语法:
INSERT ... ON DUPLICATE KEY UPDATE ...
Run Code Online (Sandbox Code Playgroud)
但是有类似的东西:
INSERT ... ON DUPLICATE KEY DO NOTHING
Run Code Online (Sandbox Code Playgroud)
?
cee*_*yoz 303
是的,有INSERT ... ON DUPLICATE KEY UPDATE id=id,或者你可以id.
Kim*_*Kim 21
REPLACE INTO优点:
缺点:
太慢了。
如果有条目匹配或,自动递增键将更改(增加 1),因为它删除旧条目然后插入新条目。unique keyprimary key
INSERT IGNORE优点:
缺点:
如果有条目匹配,自增键不会改变,unique key或者primary key自增索引会增加 1
一些其他错误/警告将被忽略,例如数据转换错误。
INSERT ... ON DUPLICATE KEY UPDATE优点:
缺点:
如果您只想插入而不是更新,则看起来相对复杂。
如果有条目匹配,自增键不会改变,unique key或者primary key自增索引会增加 1
unique key或,有primary key什么方法可以停止自动递增键的增加?正如@toien在下面的评论中提到的:innodb_autoinc_lock_mode如果您innodb用作引擎,“自动增量列将取决于5.1版之后的配置” ,但这也会影响并发性,因此在使用前需要仔细考虑。到目前为止,我没有看到任何更好的解决方案。
| 归档时间: |
|
| 查看次数: |
129879 次 |
| 最近记录: |