不工作
ALTER TABLE ProductInProduct ALTER COLUMN Id KEY IDENTITY (1, 1);
检查图像
我有一个表ProductInProduct希望它的id应该是唯一的..
答案 0 :(得分:16)
你不能"转换"将现有列添加到IDENTITY
列中 - 您必须创建新列作为INT IDENTITY
:
ALTER TABLE ProductInProduct
ADD NewId INT IDENTITY (1, 1);
更新
好的,所以 是一种将现有列转换为IDENTITY
的方法。如果你绝对需要这个 - check out this response by Martin Smith,并附上所有血腥细节。
答案 1 :(得分:1)
您无法更改现有列的标识。
您有2个选项,
使用identity&创建一个新表删除现有表
使用identity&创建一个新列删除现有列
方法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论坛帖子:
答案 2 :(得分:0)
您不必在表格中将值设置为默认值。您应该清除选项"默认值或绑定"第一