我有一个列 ID 为标识的表。接下来,我创建新的非身份列 new_ID 并使用 ID 列 + 1 中的值更新它。像这样:
new_ID = ID + 1
接下来,我删除 ID 列并将 new_ID 重命名为名称“ID”。
以及如何在这个新列“ID”上设置身份?
我想以编程方式执行此操作!
最佳答案
据我所知,您必须创建一个临时表,其中 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
关于sql - 如何以编程方式将非标识列更改为标识一?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/756354/