关于自增约束auto_increment需要注意的地方,mysql8版本的报错

一,自增约束auto_increment需要注意的地方

1 创建数据库表class:(这里使用的是mysql8版本)
在这里插入图片描述
2 数据库表class的信息描述:
在这里插入图片描述
3 在数据库表class中,插入数据:
在这里插入图片描述
根据错误提示,可以看到,第二次插入数据失败!
4 查看表class中的数据:

在这里插入图片描述
5 再次插入数据,并查看表class:
在这里插入图片描述
可以看出,这幅图片中,第一次插入时,格式错误。其他两次插入成功!
6 插入数据100,之后再次进入自增插入数据:

在这里插入图片描述
可以看出,插入数据100之后,自增是从100开始的!
7 插入数据10之后,再进行自增,之后又进行一次自增:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看出,自增不是从10开始的,而是从101开始的。由此可以得知,自增是从原本表格中自增字段的最大值开始的
8 删除自增字段的最大值,再进行自增:

在这里插入图片描述
在这里插入图片描述
可以看出,就算删除最大值103,新插入的数据还是从103开始自增!!!

附:就算插入数据失败,也进行自增:

1>创建数据库表:
在这里插入图片描述
2>插入数据:
在这里插入图片描述
可以看出,第二次插入数据失败,然而第三次插入的数据竟然从101开始自增!!!插入失败都可以自增,这真是厉害了!
3>但是以下这发生两种错误时,插入失败之后,并没有进行自增:
在这里插入图片描述
总结:第一次插入数据发生错误,可以进行自增。而之后两次发生错误,却不能进行自增的原因:
第一次发生错误时,错误的原因是,字段name进行了UNIQUE约束,这次插入的数据 ‘evan’ 与class_s表中的数据’evan’重复了。而进行自增的字段并没有发生错误,并且自增字段id是在字段name之前执行的。因此自增成功进行到101了!
第二次发生错误时,错误的原因是,自增的字段进行了PRIMARY KEY约束,这次插入的数据 102 与class_s表中的数据 102 重复了。错误发生在自增的字段上,自增失败!
第三次发生错误时,错误的原因是,插入语句insert into写成了insert in insert into,完整的错误语句为: insert in insert into class_s (name)values('tony');,可以看出,这条语句还没执行到自增的字段上,就因为发生错误停止执行了。自增的字段没执行,自增失败!

二,自增约束auto_increment在MySQL8版本的报错:

在这里插入图片描述
错误提示:ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
就是说含有auto_increment的字段,必须定义为键!!!
字段约束一共有三种键:PRIMARY KEY(主键), FOREIGN KEY(外键), UNIQUE(唯一键)。
下面是这三种键定义之后,成功建立数据库表的例子:
PRIMARY KEY(主键):
在这里插入图片描述
FOREIGN KEY(外键):
在这里插入图片描述
UNIQUE(唯一键):
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46060711/article/details/128221252