目录
- 前言
- 正文
前言
爬虫神器,无代码爬取,就来:bright.cn
Java基本知识:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- 【Java项目】实战CRUD的功能整理(持续更新)
表的主键设置为 AUTO_INCREMENT,系统会自动为每条新插入的数据生成一个自增的主键值
比如我的这个表:
CREATE TABLE sse_company_news (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
content TEXT
);
删除部分数据,甚至清空整张表,但自增主键的值却并不会重置,依然从原来的最大值基础上继续增长
本文篇幅较短,主要用于学习记录
正文
查询当前表的最大 ID:SELECT MAX(id) FROM sse_company_news;
通过 ALTER TABLE 命令修改 AUTO_INCREMENT 起始值
设置自增起始值:ALTER TABLE sse_company_news AUTO_INCREMENT = max_id + 1;
注意事项:
- AUTO_INCREMENT 只能设置为比当前最大 ID 更大的值,否则将会报错或被忽略。
- 适用于 InnoDB 和 MyISAM 表引擎。
- AUTO_INCREMENT 不是“连续的保证机制”,而是一种“唯一且递增”的机制
拓展另外一个id的延伸
-
DELETE FROM sse_company_news;
清空表数据,但 不会重置自增 ID。 -
TRUNCATE TABLE sse_company_news;
效果等同于先 DELETE 再 ALTER AUTO_INCREMENT = 1,即:会重置自增 ID(前提是表结构中未设置过自定义起始值)
具体场景:
场景 | 是否推荐手动设置 AUTO_INCREMENT |
---|---|
删除部分数据 | ✅ 推荐保持 ID 连续,可用 |
全表清空并重建 | ❌ 推荐直接使用 TRUNCATE |
数据迁移后希望从更高起点插入 | ✅ 需要手动设置 |
仅为美观而强制连续 | ❌ 不推荐(自增值本质不保证连续) |