MySQL修改主键语句

发布时间: 2023-11-21 11:22 阅读: 文章来源:1MUMB1310PS

作者:萌新J

出处:https://www.cnblogs.com/mengxinJ/p/14352038.html

MySQL 的主键可以是自增的,那么如果在断电重启后新增的值还会延续断电前的自增值吗?自增值默认为1,那么可不可以改变呢?下面就说一下 MySQL 的自增值。

特点保存策略

1、如果存储引擎是 MyISAM,那么这个自增值是存储在数据文件中的;

2、如果是 InnoDB 引擎,1)在 5.6 之前是存储在内存中,没有持久化,在重启后会去找最大的键值,举个例子,如果一个表当前数据行里最大 id是10,AUTO_INCREMENT=11。这时候,我们删除 id=10 的行,AUTO_INCREMENT 还是 11。但如果马上重启实例,重启后这个表的 AUTO_INCREMENT 就会变成 10;

2)在 8.0 开始,自增值就保存在 redo log 中,重启后会从 redo log 中读取之前保存的自增值。

自增值的确定

1、如果插入数据时 id 字段指定为0、null 或未指定,那么就把这个表当前的 AUTO_INCREMENT 值填到自增字段,并且 会以 auto_increment_offset 作为初始值, auto_increment_increment 为步长,找出第一个大于当前自增值的值作为新的自增值。

2、如果插入的数据的 id 字段指定了具体的值,就直接使用语句里的值。

自增值的修改

假设某次要输入的值是 X,当前的自增值是 Y。那么:

1、如果 X

•••展开全文