40

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

NameMicrosoft Accessのように、「 」列を「」にしたいのですが、(No Duplicates)この列はプライマリ列ではありません。どうすればこれを行うことができますか?

4

3 に答える 3

94

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

ALTER TABLE Foo ADD CONSTRAINT UQ_Name UNIQUE (Name)

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

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

一意の制約違反が発生する状況を処理するには、エラー2601を参照してください。

于 2009-10-19T14:28:48.833 に答える
8

これは、必要に応じてSSMSGUIを使用して別の方法で実行することもできます。

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

ここに画像の説明を入力してください

  1. 新しいインデックスに名前を付け(例:「UQ_MyUniqueColumn」)、「Unique」にチェックを入れ、「Add...」をクリックします。

ここに画像の説明を入力してください

  1. 次のウィンドウで列を確認してください

ここに画像の説明を入力してください

  1. 両方のウィンドウで[OK]をクリックします
于 2015-12-17T19:57:59.843 に答える
6

UNIQUE制約を探しています。

于 2009-10-19T14:28:50.533 に答える