我正在尝试将主键添加到现有表名Product_Details
中新添加的列。
添加了新列:Product_Detail_ID
(int
和not 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。我将不胜感激任何帮助。
答案 0 :(得分:30)
如果希望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
答案 1 :(得分:1)
您收到错误的原因是您的现有数据未满足约束条件。
有两种方法可以解决它:
答案 2 :(得分:1)
ALTER TABLE Jaya
ADD CONSTRAINT no primary key(No);
此处Jaya
是表名,
no
是列名,
ADD CONSTRAINT
是我们提供主键关键字
答案 3 :(得分:1)
在mysql中,我能够通过以下查询实现
ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key
答案 4 :(得分:0)
如果您想在现有表中添加一个新列,例如 deptId,那么您可以使用以下代码进行操作。
ALTER TABLE department ADD COLUMN deptID INT;
它将创建名为 deptID 的新列。
现在,如果您想在创建新列的同时添加约束,那么您可以使用以下代码来完成。在下面的代码中,我将主键添加为约束。您也可以添加另一个约束来代替外键、默认等主键。
ALTER TABLE department ADD COLUMN deptID INT NOT NULL ADD CONSTRAINT PRIMARY KEY(deptID);
答案 5 :(得分:-1)
ķ。朋友 命令: SQL> alter table tablename add primary key(col_name);
ex:alter table pk_Product_Detils添加主键(Product_Detail_ID);