UNIQUE 制約の作成と変更
UNIQUE 制約は、テーブルを作成するときに、テーブルの定義の一部として作成できます。テーブルが既に存在する場合は、UNIQUE 制約に含まれる単一または複数の列に格納されている値がすべて一意であれば、UNIQUE 制約を追加できます。1 つのテーブルに、複数の UNIQUE 制約を作成することが可能です。
既存の UNIQUE 制約があれば、それを変更または削除することもできます。たとえば、テーブルの UNIQUE 制約が他の列を参照するようにしたり、インデックスのクラスタ化の種類を変更したりすることができます。
メモ : |
---|
UNIQUE 制約を変更するには、まず既存の UNIQUE 制約を削除してから、新しい定義を使用して再作成する必要があります。 |
既定では、テーブルの既存の列に UNIQUE 制約を追加すると、すべての値が一意であることを確認するために、SQL Server 2005 データベース エンジンにより列の既存のデータが調べられます。重複した値を含む列に UNIQUE 制約を追加すると、データベース エンジンによりエラーが返され、制約は追加されません。
データベース エンジンは、UNIQUE 制約による一意性の要件を強制する UNIQUE インデックスを自動的に作成します。このため、重複した行を挿入しようとすると、UNIQUE 制約に違反していることを示すエラー メッセージがデータベース エンジンにより返され、テーブルには行が追加されません。クラスタ化インデックスが明示的に指定されていない限り、UNIQUE 制約を強制する一意の非クラスタ化インデックスが既定で作成されます。
次に示す CREATE TABLE
ステートメントの抜粋では、Name
列を定義しています。この列に、列の値が一意になることを保証する UNIQUE
制約が指定されています。
Name nvarchar(100) NOT NULL
UNIQUE NONCLUSTERED
制約に含まれている単一または複数の列に入力される値に対して一意性を求める要件を削除するには、UNIQUE 制約を削除します。関連付けられている列がテーブルのフルテキスト キーに使用されている場合には、UNIQUE 制約を削除できません。
テーブルの作成時に UNIQUE 制約を作成するには
既存のテーブルに UNIQUE 制約を作成するには
UNIQUE 制約を削除するには
UNIQUE 制約に関する情報を取得するには