【震惊!原神高手竟然这么操作?!】MySQL重置当前数据表中自增ID,不影响数据表的顺序和内容

本文讨论了MySQL建表时未设置主键ID自增导致的问题,提供四种解决方案:手动更新ID、删除插入、批量操作和原神高手选择法。建议使用批量操作来保持数据一致性,避免ID混乱。

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

1 问题场景:

MySQL建表时未设置id主键自增,有时候增加、删除、修改、数据录入错误时导致数据库中主键ID无序化。

如图


2 原因分析:

MySQL建表时未设置自增列,Python建立ORM模型时也没设置自增列
如图


3 解决方案:

3.1 方案一:手动更新id值

最不推荐
这是最简单的方法之一,我们只需要使用UPDATE语句更新指定记录的ID值即可。
以下是修改ID为4的记录为2的示例代码:

UPDATE users
SET id = 2
WHERE id = 4;

3.2 方案二:删除原有记录并插入新记录

也不推荐
另一种修改ID值的方法是先删除原有记录,然后再插入一条新记录。
这种方法的前提是原有记录的ID值在其他地方没有被引用。

-- 删除原有记录
DELETE FROM users WHERE id = 4;

-- 插入新记录
INSERT INTO users (id, name)
VALUES (2, 'Updated Name');

3.3 方案三:批量操作更新自增ID

数据排序不重要时
删除原有的自增ID,重新建立新的自增ID。

ALTER  TABLE  表名 DROP id;
ALTER  TABLE  表名 ADD id BIGINT(20) PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST;

3.4 方案四:原神高手的选择

数据排序不变
最好用的一种方式,批量操作。

-- 取消id为主键
ALTER TABLE 表名 MODIFY id INT(11) NOT NULL FIRST,DROP PRIMARY KEY;

-- 新增id2列,自增,设置为主键。
ALTER TABLE 表名 ADD id2 INT(11) NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY (id2);
 
-- 删除id列
ALTER TABLE 表名 DROP id;
 
-- 把id2改为id
ALTER TABLE 表名 CHANGE id2 id INT(11) NOT NULL AUTO_INCREMENT FIRST;

4 总结

用第四种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车干菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值