gpt4 book ai didi

sql - 向现有列添加标识

转载 作者:行者123 更新时间:2023-12-01 16:16:19 24 4
gpt4 key购买 nike

我需要将表的主键更改为标识列,并且表中已经有许多行。

我有一个脚本来清理 ID,以确保它们从 1 开始连续,在我的测试数据库上运行良好。

用于更改列以具有标识属性的 SQL 命令是什么?

最佳答案

您无法更改现有的身份列。

你有两个选择,

  1. 创建一个带有身份的新表并删除现有表

  2. 创建一个带有标识的新列并删除现有列

方法 1.(新表)在这里,您可以保留新创建的标识列上的现有数据值。请注意,如果不满足“如果不存在”,您将丢失所有数据,因此请确保也将条件放在 drop 上!

CREATE TABLE dbo.Tmp_Names
(
Id int NOT NULL
IDENTITY(1, 1),
Name varchar(50) NULL
)
ON [PRIMARY]
go

SET IDENTITY_INSERT dbo.Tmp_Names ON
go

IF EXISTS ( SELECT *
FROM dbo.Names )
INSERT INTO dbo.Tmp_Names ( Id, Name )
SELECT Id,
Name
FROM dbo.Names TABLOCKX
go

SET IDENTITY_INSERT dbo.Tmp_Names OFF
go

DROP TABLE dbo.Names
go

Exec sp_rename 'Tmp_Names', 'Names'

方法2(新列)您不能在新创建的标识列上保留现有数据值,标识列将保存数字序列。

Alter Table Names
Add Id_new Int Identity(1, 1)
Go

Alter Table Names Drop Column ID
Go

Exec sp_rename 'Names.Id_new', 'ID', 'Column'

请参阅以下 Microsoft SQL Server 论坛帖子了解更多详细信息:

How to alter column to identity(1,1)

关于sql - 向现有列添加标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com