17.10 - UNIQUE - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

列または列セットは固有になります。これは、テーブル内の2つの行が、固有制約された列に同じ値を持つことができないことを意味します。NOT NULLとして定義する必要のある列を指定します。

UNIQUE制約は、次のように指定できます。
  • 単一の列または列セットに対する列属性
  • テーブル属性(揮発テーブルを除く)
次のデータ型を持つ列に対してはUNIQUE制約を指定できません。
  • BLOB
  • BLOB UDT
  • CLOB
  • CLOB UDT
  • VARIANT_TYPE
  • ARRAY
  • VARRAY
  • Period
  • XML
  • Geospatial
  • JSON
  • DATASET

UNIQUE制約は、非テンポラル テーブルに対しては固有セカンダリ インデックスを使用し、ほとんどのテンポラル テーブルに対しては単一テーブル結合インデックスを使用します。テンポラル テーブルとテンポラル構文について詳細は、<Teradata Vantage™ - ANSIテンポラル テーブル サポート、B035-1186>および<Teradata Vantage™ - テンポラル テーブル サポート、B035-1182>を参照してください。

UNIQUE制約に使用される、システム定義のすべてのセカンダリ インデックスまたは単一テーブル結合インデックスは、1つのテーブルにつき合計で最大32のセカンダリ インデックス、ハッシュ インデックス、および結合インデックスにカウントされます。これには、UNIQUE制約で使用されるシステム定義のセカンダリ インデックスが含まれます。

UNIQUE制約は、システムが代替キーの固有性を確実に強制適用するために使用されます。UNIQUE制約を持つ列を使用して、他のテーブルとの参照整合性関係を作成できます。

行レベル セキュリティ テーブルにUNIQUE制約を定義した場合、その制約の実施に関し、そのテーブルに定義されたセキュリティ ポリシーが実行されることはありません。UNIQUE制約は、ユーザーに表示される行だけでなく、行レベル セキュリティ テーブルのすべての行に適用されます。

行レベル セキュリティ テーブルの行レベル セキュリティ制約列に対して、UNIQUE制約を定義することはできません。

UNIQUE制約は、テンポラル テーブルと非テンポラル テーブルに対して有効です。

暗黙的に定義された固有インデックスの完全なリストについては、<Teradata Vantage™ - データベースの設計、B035-1094>のプライマリ インデックスのデフォルトについての説明を参照してください。

次のすべての条件に当てはまる場合、暗黙的に定義されたインデックスは固有プライマリ インデックスです。

  • 明示的なプライマリ インデックスが指定されていない。
  • 明示的なプライマリ キーが指定されていない。
  • これがテーブルに定義された最初の固有性制約である。

前述の条件がいずれも当てはまらない場合、暗黙的に定義されたインデックスは固有セカンダリ インデックスになります。

テンポラル テーブルの場合、暗黙的に定義されるインデックスは、システム定義の単一テーブル結合インデックスになります。詳細については、<Teradata Vantage™ - ANSIテンポラル テーブル サポート、B035-1186>および<Teradata Vantage™ - テンポラル テーブル サポート、B035-1182>を参照してください。

正規化テーブルにUNIQUE制約を定義すると、Vantageは正規化行の制約を検証します。正規化行がUNIQUE制約に違反している場合、システムは要求元にエラー メッセージを返します。

名前なしのUNIQUE列制約には、この構文を使用します。

     UNIQUE

CONSTRAINT constraint_name

名前付きのUNIQUE列制約には、この構文を使用します。

     CONSTRAINT constraint_name UNIQUE

データベース オブジェクトの命名ルールについては、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。

(column_name)

複数のcolumn_nameを指定すると、固有性制約は列セットの値の組み合わせに基づいたものになります。

  • 名前なしのUNIQUEテーブル制約には、次の構文を使用します。
         CONSTRAINT UNIQUE (column_name)
  • 名前付きのUNIQUEテーブル制約には、次の構文を使用します。
         CONSTRAINT constraint_name UNIQUE (column_name)

テーブル制約としてUNIQUEを指定する際、テーブルの制約は最大64列に定義できます。