如何在mysql中维护连续的id号行数

时间:2013-09-21 06:33:54

标签: php mysql

我有一个id coloumn,它是整数和自动递增的类型。

问题是,当我删除一行时,数字的连续性会中断。

+----------------------+----+    
| name                 | id |    
+----------------------+----+    
| mashable             |  1 |    
| Behance              |  2 |    
| Techcrunch           |  3 |    
| flipkart             |  4 |   
+----------------------+----+

例如,如果我用id=2删除行,那么我输出的id将是

+----------------------+----+
| name                 | id |
+----------------------+----+
| mashable             |  1 |
| Techcrunch           |  3 |
| flipkart             |  4 |
+----------------------+----+

但我希望它像:

+----------------------+----+
| name                 | id |
+----------------------+----+
| mashable             |  1 |
| Techcrunch           |  2 |
| flipkart             |  3 |
+----------------------+----+

怎么做?

1 个答案:

答案 0 :(得分:2)

要直接回答您的问题,请按以下步骤修复连续数字字段中的差距:Fixing gaps in mysql table row id after we delete some of them

但是我们暂时要小心。

我们假设id是您的主键。 ID通常是对象的引用点,因为自动生成的ID是唯一的。称之为惯例。

这意味着,如果 ANY 部分代码取决于id列,那么您的应用程序将会中断。

如果需要执行此操作,请使用其他字段作为主要参考。也许是一个独特的name字段或类似的东西。

如果ID不是您的主键,那么您可能应该首先选择其他名称。无论如何,在这种情况下,你破坏任何东西的机会要小得多。

请注意,我说的更小,但不是零。我们不知道您的应用程序,因此您的代码可能会使用id来表示重要的事情,这对您来说意味着麻烦。