上一篇我们说了关于自排如果主键是0的问题,在这里我搞清楚了原因,导致这种情况是因为在SQL中对自排设置了初始值:
![(解释文)My SQL中主键为0和主键自排约束的关系 (解释文)My SQL中主键为0和主键自排约束的关系](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UZ3VZMjVpYkc5bmN5NWpiMjB2WW14dlp5OHhNemsyTXpJeEx6SXdNVGd3TlM4eE16azJNekl4TFRJd01UZ3dOVEU1TVRZMU5qRTRNekF6TFRZMk1UQTFPVGt3TUM1d2JtYz0uanBn.jpg?w=700&webp=1)
从这里可以看到这两个变量一个是自增的初始值,一个是增量,这里都是1,所以在设置自增的时候会把那个字段原来存在的所有0变成从1开始的步长为1的等差数列。
但是这个数值是可以被修改的(不过在这里不建议修改),在insert的时候如果插入的是0,则会默认以插入的行号为准,也就是默认值自动变成了行号。
首先我们得明白,主键自排,为什么要使用主键自排,还不因为以后索引等很多操作方便,所以这里插入时会以行号来改变0完全合理。