Bug: 删除中间某条记录后/删除最后一条记录再添加 ,auto-increment的自动增长不连续

Posted learn-with-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bug: 删除中间某条记录后/删除最后一条记录再添加 ,auto-increment的自动增长不连续相关的知识,希望对你有一定的参考价值。

问题描述:

技术图片

 

 现在我删除最后一条记录:

技术图片

 

 再加上一条新记录:

技术图片

 

发现,记录的id不是4而是5.

问题解释:

  这是因为作为主键而不得有重复的id值,就算是删掉了,因为设置了auto_increment,为了保持id的自增,他只会接着自己的增长记录走,而不管记录中的每一个值是否还存在.

办法:

 删除该列表的主键,然后重新添加它,并设置auto_increment.

  可是,当我删除时:

ALTER table users PRIMARY KEY;

  却出现:

技术图片

  说明删除主键的方法,会影响到列的定义,也就是建表时定义的auto_increment;

  于是方法改为:

ALTER TABLE users DROP userId;

  直接以列名的形式直接删除那个列,就可以忽略掉列的定义了!(但是别忘了如果他又是外键,需要先解除外键关系)

最后解决方案:

  

/*
*插入or删除操作
*/

ALTER TABLE users DROP userId;//去除原来的列
ALTER table users add userId int(6) not null auto_increment PRIMARY KEY;//重新定义,排列

  注:在myBatis中并未找到@Alter的注解,但是@Update同样适用!

 

以上是关于Bug: 删除中间某条记录后/删除最后一条记录再添加 ,auto-increment的自动增长不连续的主要内容,如果未能解决你的问题,请参考以下文章

并发问题:大数据量的訪问

如何给SQl数据库的某一条记录中的某一项赋空值

sql查询获取已删除记录

当我删除核心数据实体的最后一条记录时,为啥我的应用程序崩溃了?

PHP中如何在查询结果的每一条记录后加个编辑和删除按钮,实现编辑和删除操作。

mysql修改最后一条记录&删除第一条记录