不工作
ALTER TABLE ProductInProduct ALTER COLUMN Id KEY IDENTITY (1, 1);
检查图像
我有一个表 ProductInProduct 是希望它的 id 应该是唯一的..
不工作
ALTER TABLE ProductInProduct ALTER COLUMN Id KEY IDENTITY (1, 1);
检查图像
我有一个表 ProductInProduct 是希望它的 id 应该是唯一的..
您不能将现有列“转换”为IDENTITY
列 - 您必须创建一个新列INT IDENTITY
:
ALTER TABLE ProductInProduct
ADD NewId INT IDENTITY (1, 1);
更新:
好的,所以有一种方法可以将现有列转换为IDENTITY
. 如果您绝对需要这个 -请查看 Martin Smith的回复以及所有血淋淋的细节。
您不能更改现有的身份列。
你有2个选择,
创建具有标识的新表并删除现有表
创建具有标识的新列并删除现有列
方法1.(新表)在这里您可以保留新创建的标识列上的现有数据值。
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 论坛帖子:
您没有在表中将值设置为默认值。您应该首先清除“默认值或绑定”选项。