1

我有一些代码可以从数据库中删除帖子:

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

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

4

3 回答 3

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 被重用时,这些引用将是错误的。

通常,自动增量值只能使用一次。如果你愿意,你可以解决这个问题,但实际上没有理由这样做。

于 2012-07-05T21:29:48.300 回答
2

你真的不想这样做。

想象一下会发生以下情况:

一个新帖子是用 id 100 发布的 一个新帖子是用 id 101 发布的

所以现在你有两个 101 的 id?如果你的约束允许你,那就不好了。如果他们不让你,那是不可能的。

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

于 2012-07-05T21:32:26.893 回答
1

更改表 yourtable auto_increment=5

也许可以使用子查询来获取计数:

alter table yourtable auto_increment=(select count(*) from yourtable) + 1

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

于 2012-07-05T21:30:25.600 回答