SQL服务器 - 如何在现有表中添加标识列在内部工作?

时间:2016-02-02 20:34:15

标签: sql-server database-design architecture identity-column

我有一个包含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

所以有人可以解释为什么新添加的列与我的主键列不同,即使我的旧列值以相同的方式自然填充而不是为输出动态排序。

提前致谢。 :)

1 个答案:

答案 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);