我有一个包含100行的表,但我的主键列没有标识属性。(但此列的值看起来像标识列和顺序:1-100) 现在我尝试使用下面的代码添加新的标识列
alter table tableA add new_Iden_col bigint identity(1,1)
但我发现新的列标识值不按照我的主键列排序。
my output of old Primary key col and new inserted identity column
所以有人可以解释为什么新添加的列与我的主键列不同,即使我的旧列值以相同的方式自然填充而不是为输出动态排序。
提前致谢。 :)
答案 0 :(得分:0)
IDENTITY
函数可用于创建新的IDENTITY
列,并按ORDER BY
SELECT...INTO
子句指定的顺序分配增量值。下面是一个示例,创建一个新的IDENTITY
列,用作旧主键列顺序中的新主键。
SELECT
IDENTITY(bigint, 1,1) AS new_Ident_col
, OtherData
INTO FROM dbo.TableA_New
FROM dbo.TableA
ORDER BY old_PK_col;
DROP TABLE dbo.TableA;
EXEC sp_rename 'dbo.TableA_New', 'TableA';
ALTER TABLE dbo.TableA ADD CONSTRAINT PK_TableA PRIMARY KEY(new_Ident_col);