MODIFY PRIMARY INDEX句またはMODIFY PRIMARY AMP INDEXオプションには、次のルールが適用されます。
- MODIFY PRIMARYを指定する場合に、現時点でテーブルにプライマリ インデックスがなければ、列リストを記述して、新しいプライマリ インデックスに組み込む列を指定する必要があります。
それ以外の場合、Teradata Databaseはリクエスト側にエラーを返します。
- プライマリ インデックスまたは基本AMPインデックスのあるテーブルを変更して、異なるセットのインデックス列を含めることはできません。そうでない場合、Teradata Databaseはリクエスト側にエラーを返します。
- UNIQUE PRIMARY INDEXを指定すると、そのテーブルの新しいプライマリ インデックスはUPIになります。
プライマリ インデックスを固有にできるのは、プライマリ インデックスを定義している列セットにすべてのパーティション列(ある場合)も含まれている場合に限られます。
UNIQUE PRIMARY INDEXを指定できるのは、テーブルの現在のプライマリ インデックスで少なくとも以下の条件のいずれが1つが満たされている場合に限られます。
- 現在のプライマリ インデックスがUPIである。
- プライマリ インデックスがPRIMARY KEYまたはUNIQUE制約によって暗黙的に定義されている。
- 既存のUSIが新しいUPIと同じ列セットで定義されている。
既存のUSIは、明示的に指定、または、PRIMARY KEYまたはUNIQUE制約によって暗黙的に指定できます。
- テーブルに行が入っていない。
そうでない場合、Teradata Databaseはリクエスト側にエラーを返します。
- NOT UNIQUE PRIMARY INDEXを指定すると、そのテーブルまたは結合インデックスの新しいプライマリ インデックスはNUPIになります。
- UNIQUE PRIMARY INDEXもNOT UNIQUE PRIMARY INDEXも指定しない場合、Teradata Databaseは、テーブルまたは結合インデックスのプライマリ インデックスの固有性を変更しません。
- MODIFY PRIMARYでALLを指定することはできません。