AMI*_*ian 7 mysql reset auto-increment
我有一张桌子可以制作临时ID.当我删除表的所有行时,此表的自动递增值将重置为0.但我不想重置自动增量.我能做什么?
任何AUTO_INCREMENT值都将重置为其初始值。即使对于MyISAM和InnoDB,也是如此,它们通常不重用序列值。
...与DELETE FROM:
如果删除包含AUTO_INCREMENT列最大值的行,则该值不会再用于MyISAM或InnoDB表。如果在自动提交模式下使用DELETE FROM tbl_name(不带WHERE子句)删除表中的所有行,则该序列将从InnoDB和MyISAM之外的所有存储引擎重新开始。对于InnoDB表,此行为有一些例外,如第13.3.5.3节“ InnoDB中的AUTO_INCREMENT处理”中所述。
对于MyISAM表,可以在多列键中指定一个AUTO_INCREMENT辅助列。在这种情况下,即使对于MyISAM表,也会重复使用从序列顶部删除的值。请参见第3.6.9节“使用AUTO_INCREMENT”。
将自动增量值重置为 0 可能由多种原因引起。
你用来TRANCATE table清空桌子。TRUNCATE不仅删除行,还按设计重置自动增量值。
DELETE FROM table代替使用。
表引擎是InnoDB。InnoDB不会在磁盘上存储自动增量值,因此当MySQL服务器关闭时会忘记它。当MySQL再次启动时,InnoDB引擎会这样恢复自增值:SELECT (MAX(id) + 1) AS auto_increment FROM table。这是MySQL 8.0 版本中修复的错误。
更改表引擎:ALTER TABLE table ENGINE = MyISAM. 或者在MySQL服务器发布时将其更新至8.0版本。
| 归档时间: |
|
| 查看次数: |
5223 次 |
| 最近记录: |