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...INTO
的 ORDER 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);
我有一个包含 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...INTO
的 ORDER 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);