21

我正在尝试将主键添加到现有表名中新添加的列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

错误:

CREATE UNIQUE INDEX语句终止,因为为对象名称'dbo.Product\_Details'和索引名称找到了重复的键'pk\_Product\_Detils'。重复键值为 (0)。

我在这里错过了什么吗?我正在使用 SQL Server 2008 R2。我将不胜感激任何帮助。

4

7 回答 7

37

如果您希望 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
于 2012-12-17T21:26:49.797 回答
6

在 mysql 中,我可以通过以下查询来实现

ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key

于 2015-06-27T20:30:15.503 回答
1

您收到错误是因为您有未满足约束的现有数据。

有两种方法可以修复它:

  • 在添加约束之前清理现有数据
  • 使用“WITH NOCHECK”选项添加约束,这将停止 sql server 检查现有数据,只检查新数据
于 2012-12-17T21:27:14.593 回答
0
ALTER TABLE Jaya 
  ADD CONSTRAINT no primary key(No);

Jaya是表名,

no是列名,

ADD CONSTRAINT我们是给主键关键字吗

于 2013-10-11T09:30:07.347 回答
0

将主键添加到第一个位置

ALTER TABLE table_name 
ADD column_name INT PRIMARY KEY AUTO_INCREMENT FIRST;

参考:堆栈溢出| 网络技术

于 2021-10-16T07:20:23.253 回答
0

如果您想在现有表中添加一个新列,例如 deptId,那么您可以使用下面的代码来完成。

ALTER TABLE department ADD COLUMN deptID INT;

它将创建名为 deptID 的新列。

现在,如果您想在创建新列的同时添加约束,那么您可以使用下面的代码来完成。在下面的代码中,我将主键添加为约束。您也可以添加另一个约束来代替主键,例如外键、默认值等。

ALTER TABLE department ADD COLUMN deptID INT NOT NULL ADD CONSTRAINT PRIMARY KEY(deptID);
于 2021-02-05T06:37:32.753 回答
-1

ķ。好友命令:sql> alter table tablename add primary key(col_name);

例如:更改表 pk_Product_Detils 添加主键(Product_Detail_ID);

于 2014-08-30T08:14:31.480 回答