MySQL:自动增量减一?

时间:2012-07-05 21:25:03

标签: mysql auto-increment

我有一些代码会删除数据库中的帖子:

mysql_query("DELETE FROM `posts` WHERE ID = '$id'");

现在我想设置自动增量减一,以跟上删除的帖子。这可能吗?如果是这样,我该怎么办?谢谢!

3 个答案:

答案 0 :(得分:5)

您可以手动设置AUTO_INCREMENT值(http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html),但这不是一个好主意。

首先,说有5个帖子。如果删除ID为3的帖子,则无法将自动增量设置为3,因为ID 4和5仍在使用中。

其次,如果在另一个没有被删除的表中有对该ID的引用,那么当重用该ID时,这些引用将是错误的。

通常,自动增量值仅用于一次。如果你愿意,你可以绕过这个,但实际上没有理由。

答案 1 :(得分:2)

你真的不想这样做。

想象一下发生以下情况:

新帖子的ID为100 新帖子的ID为101 使用id 102制作新帖子 邮政100被删除...你的邮政柜台现在是101 新帖子的编号为id 101

所以现在你有两个ID 101?如果你的约束让你,这很糟糕。如果他们不让你,那是不可能的。

无论哪种方式,最好让'id 101'永远死去。它不会错过,还有几十亿的数字可供选择......

答案 2 :(得分:1)

alter table yourtable auto_increment = 5

也许可以使用子查询来计算:

alter table yourtable auto_increment =(从yourtable中选择count(*))+ 1

你真的确定这是你想做的吗?请记住,如果删除“中间”而不是最后一行,这将会中断。