是否有一种简单的方法可以防止MySQL行ID增长?

时间:2010-09-10 09:58:23

标签: php mysql auto-increment

我想知道除了AUTO_INCREMENT之外,自动设置表的最简单方法是什么。

我有一张桌子,会在很长一段时间内积累数千行。其中一些行将在以后删除。如何获取新行以获得最低可用ID,而无需手动执行。

我是否可以在每次有人添加行时重置AUTO_INCREMENT?

5 个答案:

答案 0 :(得分:4)

坦率地说,这不值得麻烦。我相信它可能,但它只是一天中唯一的标识符 - 无论是1还是1000都无关紧要。

如果是出于其他目的,请考虑使用其他字段。

IMO你不应该搞砸索引。

答案 1 :(得分:2)

不可能,ID是唯一的,可以使用一次..

只有在你清空你的桌子时才有可能。

答案 2 :(得分:1)

谁在乎? integer可以有数十亿个唯一值,所有这些值都占用相同的内存量(每个4个字节)。使用主键进行赌博就像俄罗斯轮盘赌到您的数据库:最终您的数据库将会死亡(它会被破坏)。

答案 3 :(得分:0)

我猜你可以使用触发器,但这可能会在一段时间后变成一个巨大的混乱。不明白为什么你不想使用auto_increment,你有什么特别的理由吗?

Triggers in MySQL 5.0

@Jordy:你的陈述并非都是真的,是的,在任何给定的点上只有一行可以有一个值,但是如果删除一行,你仍然可以将删除的值重用于另一行。您也可以将计数器重置为您想要包含增量的任何值,而不删除表格。

答案 4 :(得分:0)

可以将自动增量重置为下一个可能的ID:

ALTER TABLE table_name AUTO_INCREMENT = 1

您甚至不必将其设置为下一个可用密钥。 MySQL将在下次更新时自动获取下一个密钥。因此,每次将其设置为“1”都是安全的。

但如果您不关心ID,为什么甚至使用ID?甚至大量的ID都不是问题。我有一个包含超过2000万个条目的表,从来没有ID的问题。