填补IDENTITY列值的空白

Max*_*Max 3 sql sql-server

我有一个带有IDENTITY列的表

[Id] int IDENTITY(1, 1) NOT NULL
Run Code Online (Sandbox Code Playgroud)

在添加/删除了一些行之后,我以Id值中的间隙结束:

Id   Name
---------
1    Tom
2    Bill
4    Kate
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来压缩值

Id   Name
---------
1    Tom
2    Bill
3    Kate
Run Code Online (Sandbox Code Playgroud)

KM.*_*KM. 10

我强烈建议您保留身份值.

如果此ID列用作另一个表上的外键,更改它们将非常快速地复杂化.

如果某些业务逻辑必须是顺序的,那么添加一个新列ID_Display,您可以使用ROW_NUMBER()更新它们,并为最终用户保留它们.我从不让最终用户看到和/或指示我如何创建/填充/存储数据,如果他们打扰你的ID,那么向他们展示一些看起来像ID但不是FK或PK的其他数据.