PRIMARY KEY 制約の作成と変更

テーブルを作成する際には、1 つの PRIMARY KEY 制約をテーブルの定義の一部として作成できます。テーブルが既に存在する場合は、PRIMARY KEY 制約を追加できます。ただし、他の PRIMARY KEY 制約が既に存在する場合を除きます。1 つのテーブルに含めることができる PRIMARY KEY 制約は 1 つだけです。

既存の PRIMARY KEY 制約を変更または削除することもできます。たとえば、テーブルに存在する PRIMARY KEY 制約で他の列を参照したり、PRIMARY KEY 制約の列の順序、インデックス名、クラスタ オプション、または FILL FACTOR を変更したりすることができます。ただし、PRIMARY KEY 制約で定義されている列の長さを変更することはできません。

注意

PRIMARY KEY 制約を変更するには、最初に既存の PRIMARY KEY 制約を削除してから、新しい定義を使用して再作成する必要があります。

PRIMARY KEY 制約がテーブル内の既存の 1 つ以上の列に追加されると、データベース エンジンは、既存の列データおよびメタデータを調べ、既存のデータが次の主キーの規則を満たしているかどうかを確認します。

  • 列には NULL 値を使用できません。

    テーブルの作成時に指定した PRIMARY KEY 制約の列は、暗黙的に NOT NULL に変換されます。スパース列では NULL 値を許可する必要があるので、スパース列を主キーの一部として使用することはできません。

  • 重複した値は指定できません。

    重複した値を含む列または NULL 値を使用できる列に PRIMARY KEY 制約を追加すると、データベース エンジンによりエラーが返され、制約が追加されません。

上記の規則に違反する PRIMARY KEY 制約は追加できません。

データベース エンジンは、PRIMARY KEY 制約による一意性の要件を強制する一意のインデックスを自動的に作成します。テーブルにクラスタ化インデックスが存在しない場合、または非クラスタ化インデックスが明示的に指定されていない場合は、一意のクラスタ化インデックスが作成され、PRIMARY KEY 制約が設定されます。

次の場合には PRIMARY KEY 制約を削除できません。

  • 別のテーブル内の FOREIGN KEY 制約によって参照されている場合。つまり、まずその FOREIGN KEY 制約を削除する必要があります。

  • テーブル上の PRIMARY XML インデックスに PRIMARY KEY 制約が適用されている場合。

テーブルの作成時に PRIMARY KEY 制約を作成するには

既存のテーブルの PRIMARY KEY 制約を作成または削除するには

PRIMARY KEY 制約に関する情報を取得するには

関連項目

概念