簡體   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