如何以编程方式将非标识列更改为标识列?

Tom*_*ski 3 sql t-sql sql-server identity sql-server-2005

我有一个列ID的表,它是一个标识符.接下来,我创建新的非标识列new_ID,并使用ID列+ 1中的值更新它.像这样:

new_ID = ID + 1
Run Code Online (Sandbox Code Playgroud)

接下来,我删除ID列并将new_ID重命名为name'ID'.

如何在这个新列"ID"上设置标识?

我想以编程方式执行此操作!

Die*_*ego 5

据我所知,您必须创建一个临时表,其ID字段创建为IDENTITY,然后从原始表复制所有数据.最后,删除原始表并重命名临时表.这是一个表(名为TestTable)的示例,该表只包含一个字段,称为ID(整数,非IDENTITY):

BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_TestTable
    (
    ID int NOT NULL IDENTITY (1, 1)
    )  ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_TestTable ON
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
     EXEC('INSERT INTO dbo.Tmp_TestTable (ID)
        SELECT ID FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_TestTable OFF
GO
DROP TABLE dbo.TestTable
GO
EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT' 
GO
COMMIT
Run Code Online (Sandbox Code Playgroud)