如何在删除除最后一行之外的任何行后重新排序自动增量列值?

时间:2017-04-05 13:36:11

标签: c# mysql sql asp.net auto-increment

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

例如。 删除表中的2:

SNO

1

2

3

4

确实:

SNO

1

3

4

但我想重新安排:

SNO

1

2

3

注意:

  1. 不想手动编号
  2. 查询创建表是这样的:
  3. CREATE TABLE uid (sno int IDENTITY(1,1) PRIMARY KEY, qpname nvarchar(500), mob int, tm int)

2 个答案:

答案 0 :(得分:0)

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

DELETE FROM TBL1 WHERE sno = @sno; 

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

答案 1 :(得分:0)

将您的表命名为Parent,将保留备份的表称为Backup。它们应该具有相同的列。

INSERT INTO dbo.Backup 
    SELECT * FROM dbo.Parent

现在截断父表

TRUNCATE TABLE dbo.Parent

现在,您只需使用第一个命令插入数据,然后只需反转表名即可。

请记住,这可能不适用于所有情况。您可能有On delete cascade,如果是这种情况,那么您将从其他引用父表的表中丢失所有数据。我认为你永远不应该使用这个是你在这张桌子上使用任何Foriegn Key参考。