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 つ以上の列に追加されると、SQL Server 2005 データベース エンジン は、既存の列データおよびメタデータを調べ、既存のデータが次の主キーの規則を満たしているかどうかを確認します。
- 列には NULL 値を使用できません。
テーブルの作成時に指定した PRIMARY KEY 制約の列は、暗黙的に NOT NULL に変換されます。 - 重複した値は指定できません。
重複した値を含む列または NULL 値を使用できる列に PRIMARY KEY 制約を追加すると、データベース エンジン によりエラーが返され、制約が追加されません。
上記の規則に違反する PRIMARY KEY 制約は追加できません。
データベース エンジン は、PRIMARY KEY 制約による一意性の要件を強制する一意のインデックスを自動的に作成します。テーブルにクラスタ化インデックスが存在しない場合、または非クラスタ化インデックスが明示的に指定されていない場合は、一意のクラスタ化インデックスが作成され、PRIMARY KEY 制約が設定されます。
次の場合には PRIMARY KEY 制約を削除できません。
- 別のテーブル内の FOREIGN KEY 制約によって参照されている場合。つまり、まずその FOREIGN KEY 制約を削除する必要があります。
- テーブル上の PRIMARY XML インデックスに PRIMARY KEY 制約が適用されている場合。
テーブルの作成時に PRIMARY KEY 制約を作成するには
既存のテーブルの PRIMARY KEY 制約を作成または削除するには
主キーを作成する方法 (Visual Database Tools)
主キーを削除する方法 (Visual Database Tools)
PRIMARY KEY 制約に関する情報を取得するには
sys.key_constraints (Transact-SQL)