跑完后发现
DELETE FROM tablename
我的 ID(自动递增)值变得很奇怪
7, 8, 9, 0, 1, 12, 3, 4, 15
当我做 a 时按这个顺序,
SELECT * FROM tablename
我知道认证指南说用DELETE without WHERE清空表时ID可能会重置也可能不会重置,但是是什么导致ID序列如此奇怪?我很确定这是插入行的顺序。最初在删除之前,我在表中有 6 行,所以 7、8、9 似乎是可以理解的。
最佳答案
如果没有 order by
子句,数据库中绝对没有顺序或顺序保证。这与记录的存储方式有关——它们不按任何顺序存储。数据库通常会根据聚簇索引优化其存储数据的方式,但每个数据库存储数据的方式略有不同。
您永远、永远、永远都不应该认为您会有一个可重复的订单,除非您使用order by
子句。
看来您的 ID 已被收回。这个顺序绝对没有什么奇怪的——你实际上首先选择了一个伪随机顺序。
关于MySQL 在没有 WHERE 的情况下删除后自动增加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1417737/