web-dev-qa-db-ja.com

SQL Server 2008で「重複なし」列を作成する方法

SQL Serverデータベースに単純なテーブルがあります。この表には、ID int, Name nvarchar(50)という2つの列が含まれています。 ID列は、テーブルの主キーです。

Name」列を「(No Duplicates) "、Microsoft Accessの場合と同じですが、この列はプライマリ列ではありません。これを行うにはどうすればよいですか?

36
Wahid Bitar

その列に 一意の制約 を追加します。

ALTER TABLE Foo ADD CONSTRAINT UQ_Name UNIQUE (Name)

SQL Management Studio UIを介して追加するには:

  1. SQL Server Management Studioを開きます。
  2. 制約を作成するデータベースのTablesフォルダーを展開します。
  3. 制約を追加するテーブルを右クリックして、Designをクリックします。
  4. テーブルデザイナーで、Indexes/Keysをクリックします。
  5. Addをクリックします。
  6. [タイプ]ドロップダウンリストで[ユニークキー]を選択します。

ユニーク制約違反が発生する状況を処理するには、 error 2601 を参照してください。

84
Anton Gogolev

これは、SSMS GUIを使用して別の方法でも実行できます。

  1. SSMSソリューションエクスプローラーのテーブルの下にある[インデックス]を右クリックし、[新しいインデックス...]をクリックします(インデックスではなく制約を作成しようとしていることはわかっていますが、これはまさにADD CONSTRAINT SQLスクリプトが実行します。

enter image description here

  1. 新しいインデックスに名前(「UQ_MyUniqueColumn」など)を付け、「Unique」にチェックマークを付けて、「Add ...」をクリックします

enter image description here

  1. 次のウィンドウで列を確認します

enter image description here

  1. 両方のウィンドウで[OK]をクリックします
7
Tony L.

NIQUE制約 を探しています。

5
Thomas Owens