MySQL数据库删除数据后自增ID不连续的问题

本文介绍了解决MySQL表中自增ID不连续的方法。包括如何调整AUTO_INCREMENT属性、更新自增字段值以及推荐使用TRUNCATETABLE而非DELETE语句清空表等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:测试项目的时候在表上添了几条数据,测试完成后删除了这些数据,发现下一条新增数据的ID是不连续的,如下图所示:
在这里插入图片描述
解决方法:

  1. 删除完还没有新增数据,即还没有出现不连贯的数据ID时,执行以下语句:

    ALTER TABLE 表名 AUTO_INCREMENT = 1;
    

    如果已知下一条数据自增的ID(假设是10),可以直接写成ALTER TABLE 表名 AUTO_INCREMENT = 10;这样再插入数据时,自增ID会从10开始,也可以用这个语法来跳过一些编号。此外,如果AUTO_INCREMENT 的值小于ID的最大值,那么ID是从MAX(ID)+1开始自增,所以当AUTO_INCREMENT = 1时,一般默认ID是从最大值加一开始自增的。

  2. 表中已经出现不连贯的数据ID时,执行以下语句进行修改

    SET @auto_id = 0;
    UPDATE 表名 SET 自增字段名 = (@auto_id := @auto_id + 1);
    ALTER TABLE 表名 AUTO_INCREMENT = 1;
    

修改结果如下图所示:
在这里插入图片描述

如果需要清空表的数据的话,最好使用TRUNCATE TABLE 表名来删除,这样新增的数据自增ID会从1开始,如果使用DELETE来删除,新增的数据会沿着之前的ID进行自增。如果使用的数据库管理软件是Navicat,那可以选中表右键选择截断表,其效果和TRUNCATE的效果是一样的。

参考博客

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值