繁体   English   中英

在现有表中添加带有主键的列

[英]Adding column with primary key in existing table

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

添加了新列: Product_Detail_IDintnot 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种方法可以修复它:

  • 在添加约束之前清理现有数据
  • 使用“WITH NOCHECK”选项添加约束,这将停止sql server检查现有数据,只会检查新数据
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);

将主键添加到第一个位置

ALTER TABLE table_name 
ADD column_name INT PRIMARY KEY AUTO_INCREMENT FIRST;

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

合十礼🙏

克。 好友命令: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM