我有一些代码会删除数据库中的帖子:
mysql_query("DELETE FROM `posts` WHERE ID = '$id'");
现在我想设置自动增量减一,以跟上删除的帖子。这可能吗?如果是这样,我该怎么办?谢谢!
答案 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
你真的确定这是你想做的吗?请记住,如果删除“中间”而不是最后一行,这将会中断。