我有一个标识字段为int的表,我有以下数据
ID Name
-------------
1 Item1
4 Item2
9 Item3
....
我想重新排序我的身份,如
1 Item1
2 Item2
3 Item3
...
答案 0 :(得分:2)
您无法更新现有的标识值。 Identity_Insert仅用于允许您使用新插入指定标识列。 您最好的选择可能是创建一个具有相同定义的新表(包括标识列),并将所有记录减去标识列插入到新表中。然后删除旧表,并使用sp_rename重命名新表。请注意,您必须使用此方法删除任何外键。
答案 1 :(得分:0)
一个选项是添加一个新的整数字段来保存顺序值,然后为原始列打开Identity Insert ON,然后迁移新值。
答案 2 :(得分:0)
SQL Server中IDENTITY列的一个限制是它无法直接更新。最好的选择可能是创建一个新表。
通常,如果您关心值的排序,那么不要使用IDENTITY,因为控制排序太难了。请改用常规列。 SQL Server 2011以上版本支持的序列可以为您提供更多控制,并且不需要将目标列设置为只读。