当前位置:   article > 正文

关于 Mysql 数据库什么情况下插入失败 id 仍会自增的问题_insert into do nothing id会自增

insert into do nothing id会自增

学习数据库时发现,有时插入数据失败,自增约束仍然会增加,导致下一次插入成功时自增的 id 变得不再连续。而有的时候插入失败又不会自增。搜了一下并没有具体说明,于是自己试了一下。

数据库结构:

字段约束意义
idprimary key auto incrementid
nameunique姓名(实际上重名可能性很大。不过这里为了尝试就不考虑太多了)
agecheck(age<=120&&age>=0)年龄
gendernot null性别
department_idforeign key学院号

实验:

插入满足约束的学生记录,插入成功,id 默认为1.

插入年龄为121的学生,插入失败。

插入一个满足约束的学生,插入成功,id 默认为2.

插入一个重名学生,插入失败。

插入一个满足约束的学生,插入成功,id 默认为4.

插入性别格式不符(数字)的学生,插入失败。

插入一个满足约束的学生,插入成功,id 默认为5.

插入性别为 null 的学生,插入失败。

插入一个满足约束的学生,插入成功,id 默认为6.

插入外键在参照表中没有对应值的学生,插入失败。

插入一个满足约束的学生,插入成功,id 默认为8.

所以目前尝试发现:不满足非空约束和外键约束的记录,尽管插入失败,仍然会引发 id 的自增约束;而不满足非空约束、检查约束、格式的记录,插入失败,id 的自增约束也不会增加。

至于原因大概是和回滚有关……博主先深入学习一下事务的问题在想想。

如果有自己的观点也欢迎讨论~

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号