重置列自动递增

时间:2018-12-10 11:32:31

标签: sql sql-server alter-table

我有一个表,其中某个列具有活动的自动增量,但是我进行了一些测试,在测试期间,我创建了多个记录并排除了其中一些记录。我想为那些留下的人生成新的数字,而不必删除... 例如:它们是3条记录,一条记录为5,另一条记录为16,另一条记录为18。我希望第一个记录为1,第二个为2,第三个为3。当然,新记录遵循该顺序。

1 个答案:

答案 0 :(得分:0)

更改ID通常不是一个好主意。 id的目的是为了识别表中的行,以了解外键关系以及随着时间的推移。

但是,如果需要,您可以更改数字:

with toupdate as (
      select t.*, row_number() over (order by id) as new_id
      from t
     )
update toupdate
    set id = new_id;