##=====================================================================##
测试环境:
MySQL版本:MySQL 5.7.19
复制模式:ROW
##=====================================================================##

执行下面语句:

## 创建测试表
DROP TABLE T_001;
CREATE TABLE `T_001` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`C1` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `UNI_C1` (`C1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ##插入记录
INSERT INTO T_001(C1)VALUES(1); ##更新ID列
UPDATE T_001
SET ID=2,
C1=2
WHERE C1=1; ##插入新记录
INSERT INTO T_001(C1)VALUES(3);

执行报错:

ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'

##=====================================================================##
原因分析:
1、第一次INSERT语句,获得自增值为1。
2、UPDATE操作完成,将表中数据的ID列修改为2,但UPDATE操作不会触发表的自增起始值发生变化。
3、第二次INSERT语句,获得自增值为2,由于表中已存在ID=2的记录,因此插入失败,报主键重复。

##=====================================================================##
总结:

1、对于自增列,其自增值与业务无关,应避免对自增列数据进行更新操作,避免出现异常。

##=====================================================================##

最新文章

  1. [LeetCode] Count Primes 质数的个数
  2. 通读SDWebImage③--gif和webP的支持、不同格式图片的处理、方向处理
  3. 【手把手教你Maven】构建过程
  4. android adb命令
  5. 两个div叠加触发事件发生闪烁问题
  6. C#资源释放
  7. 使用开关、分段控件和web视图
  8. Xamarin for Mac 2.0.2.35 稳定版 破解补丁 Preview 2
  9. 在内部架设NuGet服务器
  10. ssh公钥自动登陆
  11. Android ADT安装时卡在Calculating requirements and dependencies
  12. 用saxon框架对xml数据进行过滤 - 程序员的天堂 - ITeye技术网站
  13. ::在c++中什么意思
  14. 3分钟搞掂Set集合
  15. Bugku-CTF之flag在index里
  16. [easyUI] datagrid 数据格 可以进行分页
  17. CentOS+Nginx+PHP 前端部署
  18. Java基础 --Unix与Mac系统 文件路径分隔符(一)
  19. nth-child与nth-of-type区别
  20. MVC的部分视图(Partial View)

热门文章

  1. Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException
  2. 查看linux是否为虚拟机,以及其它信息,cpu,主机型号,主板型号等
  3. Vue 中使用 viewerjs进行本地上传预览图片
  4. 安装和使用JD-Eclipse插件
  5. Java 字符编码(二)Java 中的编解码
  6. Go的并发调度原理
  7. 基于百词斩和扇贝单词的背单词APP软件测试
  8. thinkpadE系列重装系统:u盘启动
  9. flume1.4.0源码结构剖析
  10. 《Linux就该这么学》第十五天课程