目录
- 一,自增约束auto_increment需要注意的地方
- 附:就算插入数据失败,也进行自增:
- 二,自增约束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(唯一键):