删除除最后一行以外的任何行后,如何重新排序自动递增列值?

How to reorder auto increment column values, after deleting any row other than last row?

我想知道是否有任何 SQL 查询 asp.net,c# 可以重新安排自动递增列值..

例如。 删除 table 中的 2:

没有

1

2

3

4

会:

没有

1

3

4

但我想重新安排:

没有

1

2

3

注:

  1. 不想手动编号
  2. 创建 table 的查询是这样的:

CREATE TABLE uid (sno int IDENTITY(1,1) PRIMARY KEY, qpname nvarchar(500), mob int, tm int)

以下是应该 运行 1 之后才能完成此功能的查询。这可以在 C# 中通过执行通用的 ExecuteNonQuery() 轻松实现。

DELETE FROM TBL1 WHERE sno = @sno; 

UPDATE TBL1
SET sno = sno -1
WHERE sno > @sno;

将您的 table 命名为 Parent,将保存备份的 table 称为 Backup。他们应该有相同的列。

INSERT INTO dbo.Backup 
    SELECT * FROM dbo.Parent

现在截断父级 table

TRUNCATE TABLE dbo.Parent

现在您可以使用第一个命令将数据插入回原位并反转 table 名称。

请记住,这可能并非在所有情况下都有效。您可能打开了 On delete cascade,如果是这种情况,那么您将丢失来自其他 table 的所有数据,这些数据也引用父 table。我认为你永远不应该使用这个,因为你正在使用这个 table.

上的任何 Foriegn Key 参考