前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3篇长文讲“自增ID”,大部分人仍然搞错了!?

3篇长文讲“自增ID”,大部分人仍然搞错了!?

作者头像
架构师之路
发布2020-03-23 18:17:18
4890
发布2020-03-23 18:17:18
举报
文章被收录于专栏:架构师之路

花了3篇文章聊InnoDB自增ID的机制,《批量删除数据,常见的大坑!》中的作业题,仍然90%的人答错,有点出乎意料。

作业题是这样的:

实验步骤如上图:

第一步:建表,设定自增列;

第二步:指定id=1插入,锚定第一行是id是1;

第三步:不指定id,依赖自增机制,插入3行;

画外音:此时id应该变为2,3,4了?

第四步:delete删除所有记录;

画外音:坑就容易出在这里。

第五步:指定id=0插入;

第六步:指定id=1插入;

第七步:不指定id,依赖自增机制,插入1行;

请问,此时表中的三行记录,id分别是多少?

在三篇前序文章:

三类插入

三类插入测验答案

批量删除数据,常见的大坑!

已说明相关知识点的情况下,点赞结果是:

(1)一楼(015):144赞

(2)二楼(156):36赞

(3)三楼(015):14赞

(4)其他(017,012,567,056):20赞

画外音:点赞情况详见《批量删除数据,常见的大坑!》的评论。

批量删除数据,常见的大坑!》一文中已经明确指出:

(1)delete数据后,自增列计数不会从头开始;

(2)truncate数据后,自增列计数会从头开始;

画外音:除此之外,还有很多不同,但和本实验关系不大。

三类插入》一文也明确的指出:

(1)简单插入(simple insert)能够保持自增ID的连续性;

(2)批量插入(bulk insert)可能导致自增ID不连续;

(3)混合插入(mixed-mode insert)在实际执行的时候,才知道是否使用系统生成的自增ID;

三类插入测验答案》一文指出:

(1)自增ID从1开始;

(2)插入记录时,可以自己指定自增ID的值,也可以使用数据库生成的自增ID的值;

(3)如果指定ID为“NULL”或者“0”,会使用数据库生成的自增ID;

画外音:除此之外,文章还分享了很多知识,但和本实验关系不大。

今天,再把过程展开下,希望大家别再搞错。

建表,插入四条数据,再delete所有数据,此时自增ID计数不会归0,下一条插入的行,自增ID会从5开始。

画外音:使用truncate则计数会归0。

指定ID,插入(0, ‘000’),命中“ID为NULL或者0,使用系统自增ID”的策略,故实际记录为(5, ‘000’)。

画外音:下一条插入的行,自增ID会从6开始。

指定ID,插入(1, ‘111’),插入成功。

不指定ID,插入(‘222’),使用系统自增ID,故实际记录为(6, ‘222’)。

故,实验结果,最终的三行记录是:

5,000

1,111

6,222

你答对了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019/12/23 19:15:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档