sql - 在现有表中添加具有主键的列

标签 sql database sql-server-2008 primary-key

我正在尝试将主键添加到现有表名称 Product_Details 中新添加的列。

添加了新列:Product_Detail_ID(intnot null)

我正在尝试将主键添加到 Product_Detail_ID(请注意:没有其他主键或外键分配给此表)

我正在尝试使用此查询但出现错误。

ALTER TABLE Product_Details
ADD CONSTRAINT pk_Product_Detils_Product_Detail_ID PRIMARY KEY(Product_Detail_ID)
GO

错误:

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.Product\_Details' and the index name 'pk\_Product\_Detils'. The duplicate key value is (0).

我是不是漏掉了什么?我正在使用 SQL Server 2008 R2。如果有任何帮助,我将不胜感激。

最佳答案

如果您希望 SQL Server 自动为新列提供值,请将其设为标识。

ALTER TABLE Product_Details DROP COLUMN Product_Detail_ID
GO
ALTER TABLE Product_Details ADD Product_Detail_ID int identity(1,1) not null
GO
ALTER TABLE Product_Details
add CONSTRAINT pk_Product_Detils_Product_Detail_ID primary key(Product_Detail_ID)
GO

关于sql - 在现有表中添加具有主键的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922360/

相关文章:

MySQL 错误 1822 : Failed to add foreign key constraint; missing index for contraint BUT index exists

sql - 如何在一组行中选择金额不相互抵消的行?

mysql - 关于在sql`中获取自动列

mysql - 将两个 SQL 查询合并为一个查询

python - 如何使用pyqt在表中显示mysql数据库中的数据?

mysql - 使用另一个表中的串联数据进行 SQL 更新

php - 升级到 CI 3.0.1

tsql - 如何取消/重置 SQL Server 的事务隔离级别?

sql - 灵活匹配许多数据库记录(类似 Quicksilver 或类似 Launchy 的匹配)

sql - 将数据导入到sqlite