21

既存のテーブル名に新しく追加された列に主キーを追加しようとしています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

エラー:

object nameと index nameのCREATE UNIQUE INDEX重複キーが検出されたため、ステートメントは終了しました。重複キーの値は (0) です。'dbo.Product\_Details''pk\_Product\_Detils'

ここで何か不足していますか?SQL Server 2008 R2 を使用しています。助けていただければ幸いです。

4

7 に答える 7

37

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
于 2012-12-17T21:26:49.797 に答える
6

mysqlでは、次のクエリで達成できました

ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key

于 2015-06-27T20:30:15.503 に答える
1

制約を満たさない既存のデータがあるため、エラーが発生しています。

それを修正するには2つの方法があります:

  • 制約を追加する前に既存のデータをクリーンアップする
  • 「WITH NOCHECK」オプションを使用して制約を追加します。これにより、SQL サーバーによる既存のデータのチェックが停止され、新しいデータのみがチェックされます。
于 2012-12-17T21:27:14.593 に答える
0
ALTER TABLE Jaya 
  ADD CONSTRAINT no primary key(No);

ここJayaにテーブル名、

noは列名、

ADD CONSTRAINT主キーのキーワードを与えるか

于 2013-10-11T09:30:07.347 に答える
0

deptId という新しい列を department という既存のテーブルに追加する場合は、以下のコードを使用して実行できます。

ALTER TABLE department ADD COLUMN deptID INT;

deptID という名前の新しい列が作成されます。

作成中に新しい列とともに制約を追加する場合は、以下のコードを使用して実行できます。以下のコードでは、主キーを制約として追加しています。外部キー、デフォルトなどの主キーの代わりに、別の制約を追加することもできます。

ALTER TABLE department ADD COLUMN deptID INT NOT NULL ADD CONSTRAINT PRIMARY KEY(deptID);
于 2021-02-05T06:37:32.753 に答える