2012-07-05 146 views
1

我有一些代码,会从数据库中删除一个帖子:MySQL:自动增量减1?

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

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

+2

这不是自动增量应该如何工作。删除后不应该重复使用 – 2012-07-05 21:27:01

+1

为什么?它对你有什么好处?如果ID不是最大ID,会发生什么情况? – Ben 2012-07-05 21:27:17

+0

真的吗?我是否应该放手,让自动增量自行工作? – SnarkyDTheman 2012-07-05 21:27:51

回答

2

你真的不想这样做。

想象会发生以下情况:

一个新的职位是由ID为100 一个新的职位是由ID为101 一个新的岗位与ID 102 桩100被删除...您的柜台制作现在在101 一个新的职位是用ID 101制作的

那么现在你有两个ID和101?如果你的限制让你,那很糟糕。如果他们不让你,那是不可能的。

无论哪种方式,最好是让'ID 101'永远消失。它不会错过,还有几十亿的数字可以从...

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

ALTER TABLE yourtable AUTO_INCREMENT = 5

也许可以使用子查询,以获得计数:

ALTER TABLE yourtable AUTO_INCREMENT =(选择从yourtable COUNT(*))+ 1

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

+0

看起来像这个特定情况下的子查询不起作用,请参阅http://stackoverflow.com/questions/16673269/change-auto-increment-within-same-table-using-subquery-mysql – snowflake 2014-10-06 14:41:45