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

SQL server - how does adding identity column in existing table works internally?

我有一个包含 100 行的 table,但我的主键列不具有标识 属性。(但此列的值似乎是标识列和顺序: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

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

提前致谢。 :)

IDENTITY 函数可用于创建新的 IDENTITY 列,并按照 SELECT...INTOORDER BY 子句指定的顺序分配增量值。下面的示例创建了一个新的 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);