MySQL插入时唯一键冲突的几种处理方式

网友投稿 743 2023-04-22

MySQL插入时唯一键冲突的几种处理方式

MySQL插入时唯一键冲突的几种处理方式

MySQL插入记录时,结果提示主键冲突,怎么办?

当批量插入数据时,发现插入的这批数据中,有某些记录存在唯一键冲突,这种情况特别是在多线程进行数据插入时,会造成异常导致处理终止或者catch异常忽略部分数据。有什么好的办法对这些冲突的记录进行处理呢?

下面提供三种处理方式

1. Ignore关键词

某些场景下,我们需要批量插入的数据,某些已经在DB中了,我们希望在出现冲突时,直接跳过,把能插入的都插入就好,这种情况下,使用ignore关键词就比较合适了。

一个实际的case如下:

执行截图如下, 注意统计框中的内容,表示忽略了一条,执行插入成功一条

2. Replace Into方式

如果在批量插入中,我们希望用新的数据替换掉冲突的数据,这个时候就可以使用replace into了。

语法如下:

执行截图如下,注意红框中,当某条记录冲突之后并替换,其影响行数为2, 其实际过程是

删除冲突数据插入新的数据

3. ON DUPLICATE KEY UPDATE

还有一种情况,我们希望在出现冲突时,只更新某些数据,这个时候可以在insert语句的最后加上on duplicate key update了

语法如下

执行截图如下,这个是在原记录的基础上执行更新指定key的value, 比如上面的插入中,当冲突时,我们只更新license_allocated字段,而其它的字段没有更新

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:把数据库该干的活交给OS可行吗
下一篇:MySQL索引详解,你学会了吗?
相关文章