![](/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.