Mysql往表中一次性添加多个数据后再次单独添加数据主键自增问题

扬州城 2019-01-13 02:32:13
如题:Mysql往表中一次性添加多个数据后再次单独添加数据,为什么自增的主键值会+2

代码如下:
CREATE TABLE IF NOT EXISTS test(
id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增
num INT NOT NULL -- 添加一列
);

SELECT * FROM test; -- 查询表

-- 一次性添加多个数据
-- 结果显示主键自然增长,无异常
INSERT INTO test(id,num) VALUES
(1,1),
(NULL,2),
(NULL,3),
(NULL,4);

-- 然后单独插入一个数据,结果显示在上一次的基础上+2
INSERT INTO test(id,num) VALUES(NULL,5);

-- 再次单独插入一个数据,结果显示在上一次基础上+1,无异常
INSERT INTO test(id,num) VALUES(NULL,6);

-- 再次一次性添加多个数据
-- 结果显示主键自然增长,无异常
INSERT INTO test(id,num) VALUES
(NULL,7),
(NULL,8);

-- 单独添加一条数据,无异常
INSERT INTO test(id,num) VALUES(NULL,9);



图片结果为以上代码顺序执行产生.

求大神帮忙解答~~~感谢!!!
...全文
424 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangjun__ 2019-01-15
  • 打赏
  • 举报
回复
这个以前在oracle中遇到过,是因为序列有缓存大小的默认,在过一段时间插入数据的时候,会跳序列。现在都不建议用自动增长序列了,没啥实际的意义。
鸣鸣Amadues 2019-01-14
  • 打赏
  • 举报
回复
尽量别用自增做主键
tandy 2019-01-14
  • 打赏
  • 举报
回复
自增主键无需指定初始值 INSERT INTO test(id,num) VALUES (NULL,1), (NULL,2), (NULL,3), (NULL,4); 看看是不是正常了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧