mysql重置自增ID | 数据库中的id列重新开始排序 (亲测有效)

傅彤
• 阅读 10233

开发时经常会遇到由于删除过sql记录而导致主键ID不连续,在删除记录再新增时,自增的数值并不会占用你删除的值,而是继续在原基础上++。

其实自增编号(id)往往被用作标识记录的唯一性。无需过于在意它的顺序和值。如果需要有意义的序号值,建议另起一个字段,和主键的意义分开配合使用。

不过我这人不一样,虽然用不上主键id重新排序,但就是忍不住整理下。

这里以一个demo表为例:假设要操作的表名就是demo,期望针对表中id字段的值进行重新排序,那么接下来需要做的是:

  1. 在要操作的表上新建一个字段,用于储存当前的ID。

    alter table demo add old_id int(10) not null;
  2. 将当前的ID保存到新字段old_id中。

    update demo set old_id=id;
  3. 删除当前表的ID字段(自增主键)。

    alter table demo drop id;
  4. 重新建立ID字段,数据类型可按它原先的来。

    alter table demo add id int(10) not null;
  5. 设置一下这个新ID字段的属性,设置为自增和主键。

    alter table demo modify column id int(10) not null auto_increment, add primary key (id);
  6. 经过上面这步,新的ID字段已经重新排列了~
    下面还必须更新一下其它相关联的表,这也就是创建那个old_id的作用了。

    update demo as a, 其它相关联的表名 as b set b.aid=a.id where b.aid=a.old_id;

完成!现在的文章ID已经从1开始重新计数了~~


如果对你有用的话, 给我一个赞和收藏吧 , 你的支持对我非常重要

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
MySQL使用on duplicate key update时导致主键不连续自增
使用onduplicatekeyupdate语法有时是很方便,但是会有一个影响:默认情况下,每次更新都会更新该表的自增主键ID,如果更新频率很快,会导致主键ID自增的很快,过段时间就超过数字类型的的范围了解决这个问题,有两种方式:(实际我目前使用的方式是把自增主键ID设置为bigint,也有一部分操作先查询再选择插入OR更新)方法一:拆分成两个
Wesley13 Wesley13
3年前
mysql的自增id 用完了怎么办?
mysql的自增id用完了怎么办?createtabletest\_auto\_increment\_id(idintUNSIGNEDauto\_incrementPRIMARYKEY,nameVARCHAR(255));执行sql语句!(https://oscimg.oschina.net/oscnet/updfcee9
Wesley13 Wesley13
3年前
mysql自增id获取
mysql自增id获取使用max函数:selectmax(id)fromtablename 优点:使用方便快捷。缺点:获取的不是真正的自增id,是表中最大的Id,如果有删除数据的话,那么该值和自增id相差比较大。如果有连表数据,有可能导致数据错乱。使用LAST\_INSERT\_ID
Stella981 Stella981
3年前
MongoDB ObjectId详解及使用
MongoDB中我们经常会接触到一个自动生成的字段:”\_id”,类型为ObjectId。本文详解ObjectId的构成和使用。ObjectId构成之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。但在分布式环境下,这种方法就不可行了,会产生冲突。为此,MongoDB采用了一个称之为ObjectId的类型来做主
Wesley13 Wesley13
3年前
mysql关于自动编号问题 转载
MySql数据库唯一编号字段(自动编号字段)在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO\_INCREMENT属性来自动生成。MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据列自增属性。ISAM表如果把一个NULL插入到一个AUTO\_INCREMEN
Wesley13 Wesley13
3年前
MySql 面试开发技术点汇总
表结构设计1、为什么一定要设一个主键?答:因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键。所以啦,反正都要生成一个主键,那你还不如自己指定一个主键,在有些情况下,就能显式的用上主键索引,提高查询效率!2、你们主键是用自增还是UUID?答:肯定答自增啊。innod
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL中添加、删除约束
MySQL中6种常见的约束:主键约束(primarykey)、外键约束(foreignkey)、非空约束(notnull)、唯一性约束(unique)、默认值约束(defualt)、自增约束(aoto\_increment),下面是添加、删除这几种约束的一些方法。\我已经建了数据库;1\添加约束21、建表时添加约
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Vitess全局唯一ID生成的实现方案 | 京东云技术团队
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,Sn