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 key
primary 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 次 |
最近记录: |