删除中间记录后重新设置SQL Server ID

Sli*_*ram 1 sql sql-server stored-procedures

我有一个表,我从中删除记录.问题是当我删除某个记录时,它的ID也会飞走,因此表中不再遵守ID顺序.我想要的是一个SQL Server过程在删除其中一个记录后重新排列记录.

示例:

ID                                              ID                     ID
1                                                1                      1
2  I delete record 2, i want to have this ===>   2  and NOT this :      3
3                                                3                      4
4                                                4                      5
5
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

你不想这样做.本id应该是没有比将行标识等意义的领域.您可能有其他表引用id它们,它们会破坏.

相反,只需在查询表时重新计算顺序值:

select t.*, row_number() over (order by id) as seqnum
from t;
Run Code Online (Sandbox Code Playgroud)