首页
下载应用
提交文章
关于我们
问卷:你怎么看自由微信?
🔥 热搜 🔥
1
上海
2
习近平
3
新疆
4
鄂州父女瓜
5
乌鲁木齐
6
疫情
7
H工口小学生赛高
8
习明泽
9
芊川一笑图包
10
印尼排华
分类
社会
娱乐
国际
人权
科技
经济
其它
首页
下载应用
提交文章
关于我们
问卷:你怎么看自由微信?
🔥
热搜
🔥
1
百度
2
今日热点
3
微信公众平台
4
贴吧
5
opgg
6
dnf私服
7
百度贴吧
8
知乎
9
dnf公益服
10
百度傻逼
分类
社会
娱乐
国际
人权
科技
经济
其它
白石洲拆迁后,那些上学奔波的孩子都去哪儿了?
一个医保局长之死
给宠物做保姆的中国留学生
本以为吴京大儿子叫“吴所谓”够随意了,听到二儿子名字,真服了
法院4.2元拍卖一瓶雪碧,限自提!被执行人回应:没有更多可供执行财产
生成图片,分享到微信朋友圈
查看原文
其他
3篇长文讲“自增ID”,大部分人仍然搞错了!?
Original
58沈剑
架构师之路
2020-09-08
花了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
你答对了吗?
架构师之路-分享技术思路
相关文章
:
《
InnoDB架构,一幅图秒懂!
》
阅读原文
,推荐两个程序员
妹子的公号
。
您可能也对以下帖子感兴趣
{{{title}}}
文章有问题?点此查看未经处理的缓存