既存のテーブル名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を使用しています。助けていただければ幸いです。
SQL Serverが新しい列の値を自動的に提供するようにする場合は、それをIDにします。
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
ALTER TABLE Jaya
ADD CONSTRAINT no primary key(No);
ここでJaya
はテーブル名、
no
は列名、
ADD CONSTRAINT
主キーキーワードを指定していますか
制約を満たさない既存のデータがあるため、エラーが発生しています。
修正するには2つの方法があります。
Mysqlでは、次のクエリで達成できました
ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key