背景:正常我们的主键类型都是递增的,设置的类型可能是bigint(20),也有可能是int(11),为啥这样设置呢
一、整型类型
类型 | 占用字节 | 二进制位数 | 最大值 | 最大值位数 | 数据库中设置 | M(最大显示宽度默认值) |
tinyint | 1 | 8 | 2^8-1 | 3 | tinyint(M) | 4 |
smallint | 2 | 16 | 2^16-1 | 5 | SMALLINT(M) | 6 |
mediumint | 3 | 24 | 2^24-1 | 8 | MEDIUMINT(M) | 9 |
int | 4 | 32 | 2^32-1 | 10 | INT(M) | 11 |
bigint | 8 | 64 | 2^64-1 | 19 | BIGINT(M) | 20 |
二、问题
1、主键有没有最大值?当主键已达到最大值再次插入数据会怎样?
答:通过上面的类型分析,发现都是有最大值的,当主键已达到最大值,再次插入数据由于不能再大了,主键依然会是最大值,插入的时候会报主键冲突错误。