重组现有 SQL Server 表中的序列

Posted

技术标签:

【中文标题】重组现有 SQL Server 表中的序列【英文标题】:Re-structure sequence in existing SQL Server table 【发布时间】:2020-05-22 05:06:15 【问题描述】:

我有一个 SQL Server 2016 表,它有超过 10,000 行。 Id 列是递增 1 的顺序 id。但 Id 的顺序不正确,如下面的屏幕截图所示,缺少 330。有没有办法在现有表中更正这个序列?

我已经尝试如下,但它不起作用。

CREATE SEQUENCE contacts_seq
AS BIGINT
   START WITH 1
   INCREMENT BY 1
   MINVALUE 1
   MAXVALUE 99999
   NO CYCLE
   CACHE 10;

【问题讨论】:

您必须问自己为什么代理键的值很重要?提示:它没有。 ***.com/questions/29819849/… 【参考方案1】:

fixing 这个没有意义 - 您将执行一项操作,该操作将阻止对您的表的访问,并可能影响您的应用程序性能。

然后,有人可以删除记录X,您将再次回到原来的位置。

一般id的目的是唯一标识一行。如果出于某些可视化原因您不想拥有gaps,您可以使用RANKING 函数来fix this。

例如:

SELECT ROW_NUMBER () OVER (ORDER BY id) AS [ID]

【讨论】:

以上是关于重组现有 SQL Server 表中的序列的主要内容,如果未能解决你的问题,请参考以下文章

根据表中另一个现有列的内容更改 SQL Server 中的现有列

如何将 R 数据框插入到 SQL Server 中的现有表中

SQL Server 数据库项目比较架构忽略同一表中的字段序列

使用 Access 数据库表填充现有 SQL Server 数据库表

将具有默认值的列添加到 SQL Server 中的现有表

SQL Server 将现有表复制到新表中但跳过重复记录