【发布时间】:2020-05-21 15:11:31
【问题描述】:
所以我正在制作一个程序,我可以在其中制作、保存和删除数据库中的项目,但我希望现有项目的 id 能够相互跟进。 例子, 我有这些物品:
| Id | Item name |
----------------------
| 1 | item 1
| 2 | item 2
| 3 | item 3
然后当我删除第 2 项时,我希望它是:
| Id | Item name |
----------------------
| 1 | item 1
| 2 | item 3
而不是:
| Id | Item name |
----------------------
| 1 | item 1
| 3 | item 3
【问题讨论】:
-
你认为你为什么想要这个?这会导致很多问题,但它会解决什么问题呢?
-
诸如此类的身份类型 ID 仅意味着唯一 - 不是连续的。当关系数据库中有相关数据时,重新排序是一个主要问题。它们也不意味着具有任何其他内在价值。
-
我使用 id 作为他们在列表中的位置的参考。我可以换一种方式吗?
-
通常您不想这样做,但您必须重置身份种子。如果您使用的是 SQL Server,请参阅stackoverflow.com/questions/21824478/…
-
@DaanVandeVoorde:“位置”是一个完全相对的术语。如果没有明确的
ORDER BY子句,则无法保证排序顺序,除非您按Id排序,否则无论如何它都会乱序。听起来您正在尝试将此值用于不打算达到的目的。你需要这个序列做什么?