我有一些代码,会从数据库中删除一个帖子:MySQL:自动增量减1?
mysql_query("DELETE FROM `posts` WHERE ID = '$id'");
现在我要设置自动增量减一跟上删除的帖子。这可能吗?如果是这样,我该怎么做?谢谢!
我有一些代码,会从数据库中删除一个帖子:MySQL:自动增量减1?
mysql_query("DELETE FROM `posts` WHERE ID = '$id'");
现在我要设置自动增量减一跟上删除的帖子。这可能吗?如果是这样,我该怎么做?谢谢!
你真的不想这样做。
想象会发生以下情况:
一个新的职位是由ID为100 一个新的职位是由ID为101 一个新的岗位与ID 102 桩100被删除...您的柜台制作现在在101 一个新的职位是用ID 101制作的
那么现在你有两个ID和101?如果你的限制让你,那很糟糕。如果他们不让你,那是不可能的。
无论哪种方式,最好是让'ID 101'永远消失。它不会错过,还有几十亿的数字可以从...
您可以手动设置AUTO_INCREMENT
值(http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html),但这不是一个好主意。
首先,假设有5个职位。如果ID 3的帖子被删除,您不能真正将自动增量设置为3,因为ID 4和5仍在使用中。其次,如果在另一个表中有任何对该ID的引用没有被删除,那么当这个ID被重新使用时,那些引用将会是不好的。
一般来说,自动增量值只能用于一次。如果你愿意,你可以解决这个问题,但是真的没有理由。
ALTER TABLE yourtable AUTO_INCREMENT = 5
也许可以使用子查询,以获得计数:
ALTER TABLE yourtable AUTO_INCREMENT =(选择从yourtable COUNT(*))+ 1
是你真的确定这是你想要做的吗?请记住,如果删除一行“在中间”而不是最后一行,则会中断。
看起来像这个特定情况下的子查询不起作用,请参阅http://stackoverflow.com/questions/16673269/change-auto-increment-within-same-table-using-subquery-mysql – snowflake 2014-10-06 14:41:45
这不是自动增量应该如何工作。删除后不应该重复使用 – 2012-07-05 21:27:01
为什么?它对你有什么好处?如果ID不是最大ID,会发生什么情况? – Ben 2012-07-05 21:27:17
真的吗?我是否应该放手,让自动增量自行工作? – SnarkyDTheman 2012-07-05 21:27:51