内容简介:##=====================================================================##测试环境:MySQL版本:MySQL 5.7.19
##=====================================================================##
测试环境:
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、对于自增列,其自增值与业务无关,应避免对自增列数据进行更新操作,避免出现异常。
##=====================================================================##
以上所述就是小编给大家介绍的《MySQL--更新自增列的潜在风险》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 免费开源软件的潜在安全风险
- Gmail也出漏洞,邮件潜在的安全风险不得不防
- zBang:可检测潜在特权帐户威胁的风险评估工具
- 黑客用比特币代码漏洞生产出235亿个PGN代币,潜在风险或进一步扩
- 教你在Python中实现潜在语义分析
- Graudit 2.3 发布,代码潜在安全漏洞检查
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。