我有一些代码可以从数据库中删除帖子:
mysql_query("DELETE FROM `posts` WHERE ID = '$id'");
现在我想设置自动增量减一以跟上已删除的帖子。这可能吗?如果是这样,我该怎么做?谢谢!
我有一些代码可以从数据库中删除帖子:
mysql_query("DELETE FROM `posts` WHERE ID = '$id'");
现在我想设置自动增量减一以跟上已删除的帖子。这可能吗?如果是这样,我该怎么做?谢谢!
您可以手动设置该AUTO_INCREMENT
值(http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html),但这是个坏主意。
首先,假设有 5 个帖子。如果删除了 ID 为 3 的帖子,则无法真正将自动增量设置为 3,因为 ID 4 和 5 仍在使用中。
其次,如果另一个表中对该 ID 的任何引用没有被删除,那么当该 ID 被重用时,这些引用将是错误的。
通常,自动增量值只能使用一次。如果你愿意,你可以解决这个问题,但实际上没有理由这样做。
你真的不想这样做。
想象一下会发生以下情况:
一个新帖子是用 id 100 发布的 一个新帖子是用 id 101 发布的
所以现在你有两个 101 的 id?如果你的约束允许你,那就不好了。如果他们不让你,那是不可能的。
无论哪种方式,最好让“id 101”永远死去。不会错过的,还有数十亿个数字可供选择……
更改表 yourtable auto_increment=5
也许可以使用子查询来获取计数:
alter table yourtable auto_increment=(select count(*) from yourtable) + 1
你真的确定这是你想做的吗?请记住,如果您删除“中间”行而不是最后一行,这将中断。