![](/img/trans.png)
[英]adding a foreign key constraint to a primary key column of a table with existing data
[英]Adding column with primary key in existing table
我正在尝试将主键添加到现有表名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'
'dbo.Product\\_Details'
的重复键。 重复的键值为 (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
在 mysql 中,我能够通过以下查询实现
ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key
您收到错误是因为您的现有数据未满足约束条件。
有2种方法可以修复它:
ALTER TABLE Jaya
ADD CONSTRAINT no primary key(No);
这里Jaya
是表名,
no
是列名,
ADD CONSTRAINT
是我们给出主键关键字
如果你想在现有表中添加一个新列,比如 deptId,那么你可以使用下面的代码来完成。
ALTER TABLE department ADD COLUMN deptID INT;
它将创建名为 deptID 的新列。
现在,如果您想在创建新列时也添加约束,那么您可以使用以下代码来完成。 在下面的代码中,我将主键添加为约束。 您也可以添加另一个约束来代替外键、默认等主键。
ALTER TABLE department ADD COLUMN deptID INT NOT NULL ADD CONSTRAINT PRIMARY KEY(deptID);
克。 好友命令:sql> alter table tablename add primary key(col_name);
例如:alter table pk_Product_Detils 添加主键(Product_Detail_ID);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.