UNIQUE制約は、変更した列セットに固有の値を含める必要があることを指定します。Teradata Databaseは、UNIQUE制約を固有セカンダリ インデックスまたは単一テーブル結合インデックスとして実装します。
以下のルールがUNIQUE制約に適用されます。
- UNIQUE制約は、常にNOT NULL属性とペアで指定する必要があります。
固有インデックスではNULL受入可能列が有効を参照してください。
- UNIQUE制約は、列レベルで定義することも(単純な制約)、テーブル レベルで定義することも(複合制約)できます。
- 列レベルのUNIQUE制約は、指定された列だけを参照します。
- テーブル レベルのUNIQUE制約は、列名リストを使用して複数の列に定義することができます。
- テーブル レベルのUNIQUE制約は、最大で64個の列に対して定義できます。
- テーブル レベルの制約は、1つのテーブルあたり最大で100個まで定義できます。
- UNIQUE制約は、グローバル一時トレース テーブルには定義できません。
- 列パーティション テーブルに対してUNIQUE制約を定義できます。
パーティション化されていないNoPIテーブルに対してはUNIQUE制約を定義できません。
そのように定義しようとした場合、Teradata Databaseはエラーを返さず、UNIQUE制約の指定をUNIQUE NOT NULLセカンダリ インデックスの指定に変換します。そのように変換されるため、このテーブルに対してSHOW TABLE文を発行した場合、システムから返される作成テキストにはUNIQUE制約の指定は含まれておらず、その代わりに、UNIQUE制約を指定された列セットに対するUNIQUE NOT NULLセカンダリ インデックスまたは単一テーブル結合インデックスが含まれています。
この状態は、UNIQUE NOT NULLセカンダリ インデックスとして設定されたUNIQUE制約列の通常の実装とは異なります。Teradata Databaseは、その制約をUSIとして単に実装するのではなく、UNIQUE制約を定義されたNoPIテーブルのストアド作成テキストを実際に変更するからです。
- UNIQUE制約は、以下のデータ型の任意のを定義された列に対しては定義できません。
- BLOB
- CLOB
- BLOBに基づくUDT
- CLOBに基づくUDT
- ARRAY
- VARRAY
- PERIOD
- 地理空間