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

测试环境:

MySQL版本:MySQL 5.7.19

复制模式:ROW

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

执行下面语句:

## 创建测试表DROP TABLET_001;CREATE TABLE`T_001` (

`ID`int(11) NOT NULLAUTO_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列UPDATET_001SET 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 自增列坏处_MySQL--更新自增列的潜在风险相关推荐

  1. mysql自增默认值_mysql auto_increment自增初始值与步长

    MySQl自增列起始与步长 自增初始值 一.alter的使用 默认初始值为1 步长为1的情况 1.建表 2.插入数据 当插入数据可以看到步长为1,起始值为1 3.增加一列数据时 默认在加上步长 4.删 ...

  2. mysql update语句怎么写_mysql更新语句怎么写?

    MySQL更新语句也就是MySQL中的update语句,当我们需要更新或者修改表中的数据时,就会使用这个update语句,下面我们就来看一下mysql更新语句的具体写法. MySQL中update语句 ...

  3. mysql读取自增值失败_MySQL添加自增列失败

    想往一个mysql表里添加一个自增列做主键,居然失败报告无法读取,这是怎么回事? 1.问题描述 有位朋友在升级discuz论坛数据库时遇到问题了,想给一个表添加自增列做主键,结果发生下面的报错: my ...

  4. mysql update两个字段_mysql更新多个字段语句写法!

    mysql 数据库,更新字段语句: 一.UPDATE: UPDATE的功能是更新表中的数据.这的语法和INSERT的第二种用法相似.必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录 ...

  5. mysql 修改某列数据_mysql修改表某列数据问题

    2012-11-02 回答 下面列出: 1.增加一个字段 alter table user add column new1 varchar(20) default null; //增加一个字段,默认为 ...

  6. mysql自增字段不连续_MySQL中自增主键不连续之解决方案。(20131109)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天只做了一件事情,但解决了很大的问题.相信这也是令很多程序员和数据库管理员头疼的事情. 假设在一MySQL数据表中,自增的字段为id,唯一字段为abc, ...

  7. mysql临时表好处和坏处_mysql临时表产生的执行效率问题改进(转)

    问题: 近日,线上MySQL查出一个慢sql,每次都要查询1000ms以上,严重影响用户体验 今得空去诊断一番,记录如下: sql原句: SELECT r.object_id AS cardId, c ...

  8. mysql 判断数据是否在_MySQL更新数据之前是否判断数据是否有被修

    如果是要完成 存在则 更新, 不存在 则插入的操作. 直接使用 replace into 语句就可以了 下面是例子代码 -- 源表CREATE TABLE test_from (id INT prim ...

  9. mysql 5.7参数配置_MySQL 5.7-新增配置参数

    全局动态变量,单位微妙,默认0,范围:0-1000000(1秒). 表示binlog提交后等待延迟多少时间再同步到磁盘,默认0,不延迟.设置延迟可以让多个事务在用一时刻提交,提高binlog组提交的并 ...

最新文章

  1. mysql 游标 ,嵌套游标
  2. java String format占位符
  3. 20211222 AB和BA具有相同的非零特征值;如果A和B均方,且AB=I,那么BA=I,A、B均可逆
  4. 2020CCPC(威海) - Clock Master(数论+分组背包)
  5. UE4移动平台上基于物理的着色
  6. Ruby之散列与快排小程序
  7. think in python 第二版_译林版牛津高中英语,模块词组二
  8. (十八)其他数据库对象,视图,序列
  9. 前端代码审查利器:vscode插件GitLab Workflow
  10. TCPIP详解 卷一核心概念整理
  11. Oracle书籍推荐
  12. 子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2
  13. ceentos7修改成中文界面
  14. meta标签http-equiv属性的作用
  15. 试试在transformers中调用ERNIE
  16. 史玉柱用“脑白金”式网游重建巨人
  17. 阿里巴巴Java面试题锦集
  18. 水经注有哪些单款地图下载器授权?
  19. 吴昊品工程级别软件项目 Round 3 —— Mobile Safe(for android)
  20. 大数据毕业设计可视化大屏前后端项目分享

热门文章

  1. 通过16进制文件头判断文件类型
  2. 冒泡排序python代码_Python-排序-冒泡排序-优化
  3. FCN训练自己的数据集及测试
  4. FPGA组合逻辑部件LUT的基本原理
  5. 设计模式漫谈之迭代器模式
  6. 请MM吃饭之工厂模式实现
  7. Message,MessageQueue,Looper,Handler详解+实例
  8. Debian9.1下安装后没有ifconfig命令
  9. Linux 技巧:让进程在后台可靠执行的几种方法
  10. Matlab 图像的邻域和块操作