在插入数据的时候,有时候会遇到主键(唯一键)冲突的情况。下面讲述两种解决办法。

【1】 更新原数据

insert into 表名[(字段列表:包含主键)]
values(值列表)
on duplicate key update 字段 = 新值。

示例如下 :

insert into p_user (id,name,age,sex) VALUES(1,'luco',13,'b1y')
-- 如果主键(唯一键)冲突用到下面语句
on duplicate key update age = 199,name='luco',sex='b1y';

表中已经有了id(primary key)的记录数据,此时再插入id=1的数据,肯定提示冲突。这里就是当冲突时,将原先除了主键之外的字段进行更新(如果主键为ID, 同时name为unique,新插入的数据中name在表中已经存在,则提示name数据冲突,插入失败!)。

【2】 替换数据

语法格式如下:

Replace into 表名[(字段列表:包含主键)] values(值列表)

示例如下:

replace  into p_user (id,name,age,sex) VALUES(1,'jane5',14,'b0oy') 
  • id为主键,name为unique,且表中无jane5。那么成功插入,影响行数2;

  • id为主键,name为unique,但表中存在一个jane5(与主键冲突的行记录不一致),那么成功插入同时删除了表中jane5的行记录,影响行数3。

  • id为主键,主键无冲突,且name无冲突,成功插入,影响行数1。

  • id 为主键,主键无冲突,但name有一个冲突,成功插入同时删除已有的name行记录,影响行数2。

  • id为主键,主键冲突。name冲突且与id冲突为同一行记录(例子:语句执行了两遍),影响行数2,成功替换。

总之,无论更新还是替换,都是先删除原数据,再重新插入(根据影响行数判断)。但是替换更便捷!需要注意的是除了主键外,表中是否还存在unique。

MySQL中数据插入与主键冲突解决方案相关推荐

  1. mysql插入报主键冲突,解决方法主键索引重新排序

    mysql插入报主键冲突,解决方法主键索引重新排序 参考文章: (1)mysql插入报主键冲突,解决方法主键索引重新排序 (2)https://www.cnblogs.com/nizuimeiabc1 ...

  2. MySQL中的索引(主键索引)

    MySQL中的索引(主键索引篇) 主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值.一般是在建表的时候同时添加主键索引: 一.如何添加主键索引 修改表添加主键索引 Alter tab ...

  3. 批量插入数据表数据时,主键冲突的解决

    2.使用普通的insert into on conflict合并写入,存在写入放大思路: 大量数据,批量插入到数据表中时,很容易造成主键冲突,重复数据有唯一约束插入不进去表中,报错的问题出现. 排查错 ...

  4. sqlserver使用distinct插入数据还出现主键冲突

    最近遇到一个用distinct查询数据插入表变量但发生主键冲突的问题 表结构: create table dis_test(eid bigint not null,uid varchar(20) no ...

  5. mysql中怎么添加复合主键_mysql添加复合主键的方法

    mysql添加复合主键的方法 发布时间:2020-09-25 10:12:21 来源:亿速云 阅读:90 作者:小新 mysql添加复合主键的方法?这个问题可能是我们日常学习或工作经常见到的.希望通过 ...

  6. oracle主键自增 数据插入时主键自增

    1.建表 create table overseas_users(overseas_id varchar2(10) not null primary key, --主键name varchar2(50 ...

  7. MySQL中使用UUID()函数生成主键

    SELECT REPLACE(UUID(),'-',''); 运行以上代码得到结果:4b1ea801bea911e7913c1418775159ef 直接使用UUID()函数得到的结果是8e9503d ...

  8. Hibernate保存数据自动生成主键出现奇怪异常Duplicate entry '0' for key 1

    今天在写一块程序的时候,出现了一个异常信息,捣鼓了一上午,终于找到了异常原因--不仅仅是简单的主键冲突问题 测试数据库:MySQL 异常信息如下: org.hibernate.exception.Co ...

  9. mysql多重主键错误,老师,jd_spider中数据插入Mysql时一直显示主键错误,求助~

    老师,jd_spider中数据插入Mysql时一直显示主键错误,求助~ 而且peewee会自动生成一个goods表的主键 万分感谢! 建立表的代码如下 from peewee import * db ...

最新文章

  1. springboot 多线程_SpringBoot异步调用@Async
  2. python区块链开发_Fabric区块链Python开发详解
  3. Android 拦截WebView请求,并加入或修改参数(GET)
  4. C++Saddleback search鞍背搜索的实现算法(附完整源码)
  5. 自写sonar 插件加载到sonar 服务中的展示信息
  6. 1536299 2013 - PPR item change - Genil mode
  7. 信用卡套现只要正常还款,银行是不是睁只眼闭只眼?
  8. 5.1.2全景声音箱摆位_如何体验全景声
  9. ios web页面测试方法
  10. PAT乙级 1061 判断题
  11. 一家公司的几道笔试题
  12. Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货
  13. android自定义秒表(精确到0.1秒,带计次功能)
  14. python 计算斜率
  15. 节理玫瑰花图怎么画,节理玫瑰花图和地质图.ppt
  16. [arch Linux IDEA] 搭配MariaDB的JDBC
  17. 核心业务8:提现+展示还款信息和回款信息
  18. 今日头条18校招第一批算法笔试
  19. github下载提速教程
  20. 自动生成PDF文件(Java通过PDF模板自动生成PDF)

热门文章

  1. PyQT5一起学做图书管理系统(6)添加/删除书籍
  2. bugkuCTF——社工篇
  3. Jackson注解 @JsonCreator
  4. 驾驶证计算机管理系统,驾驶证信息系统
  5. 本地连接dns服务器没响应,dns服务器未响应,教您dns服务器未响应怎么解决
  6. 基于LSTM的股票价格预测模型【附源码】
  7. amd处理器更新zen4服务器芯片,AMD将推出64 核心Zen 4处理器,整体性能提升了40%...
  8. VASP6.3.2中VTST插件的编译
  9. bing的简单英文字典工具
  10. DTO概念的了解和使用