ADD FOREIGN KEY REFERENCES - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ncd1596241368722.ditamap
dita:ditavalPath
ja-JP/ncd1596241368722.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

別のテーブルのキーに外部キー参照を追加します。

REFERENCES referenced_table_name(referenced_column_name)を指定する前にFOREIGN KEY referencing_column_nameを指定する必要があります。

名前なしのFOREIGN KEY REFERENCESテーブル制約には、次の構文を使用します。
     ADD FOREIGN KEY (referencing_column) REFERENCES 
              referenced_table_name(referenced_column_name)

名前付きのFOREIGN KEY REFERENCESテーブル制約には、この構文を使用します。

     ADD CONSTRAINT  constraint_name  FOREIGN KEY 
             (referencing_column) REFERENCES 
              referenced_table_name  (referenced_column_name)
(column_name_list)
referenced_table_nameのプライマリ キーまたは代替キーを参照する1つ以上の列。
table_name
参照テーブルの名前は、referencing_columnセットによって参照されるプライマリ キーまたは代替キーを含むテーブルの名前です。
参照先のテーブルまたは参照先のテーブルの指定されたすべての列のいずれかに対するREFERENCES権限を持っている必要があります。
1つのテーブルには最大64の外部キーと、最大64の参照制約の制限があります。
1つのテーブルを最大64の他のテーブルが参照できます。テーブルごとに最大128の参照インデックスをテーブル ヘッダーに格納できます。ただし、テーブルとその子テーブルのリレーションシップをマップする64の参照インデックスのみが、参照インデックス サブテーブルごとに格納されます。
参照インデックスに対するテーブル ヘッダーの制限には、テーブルへの参照とテーブルからの参照の両方が含まれます。
column_name
参照される列の名前は、referencing_columnセットによって参照されるreferenced_table_nameの列セットです。
CONSTRAINT
名前付きの制約のキーワード。
constraint_name
テーブル属性外部キー制約の名前。constraint_nameはオプションです。外部キーREFERENCES制約は、列属性またはテーブル属性として指定できます。Vantageは外部キーの2つの形式に異なる構文を使用します。外部キーREFERENCES制約は、次の状態が可能です。
  • NULL
  • 固有(ただし、ほとんどありません)。固有外部キーの例としては、複数のテーブルに縦方向にパーティション化した論理テーブルがあります。
次のいずれかのデータ型を持つ列に対しては外部キー制約を追加できません。
  • BLOB
  • CLOB
  • ARRAY/VARRAY
  • Period
  • UDT
  • XML
  • Geospatial
  • JSON
  • DATASET
行レベル セキュリティ制約列に外部キー制約を指定することはできません。
標準の参照整合性制約、バッチ参照整合性制約、および参照制約を組み合わせて同じテーブルに指定することはできますが、同じ列セットには指定できません。
さまざまな型の制約については、Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184のCREATE TABLEを参照してください。
親テーブルの作成前に子テーブルを作成できますが、まだ作成されていないテーブルを前方参照するREFERENCES制約では、親テーブルの名前をデータベース名で修飾することはできません。
前方参照される作成前の親テーブルは、作成する子テーブルと同じデータベース内に存在する必要があります。
外部キーreferenced_column_nameリストの各列はREFERENCES table_namereferenced_table_nameの列に対応する必要があり、また、同じ列名を複数回指定することはできません。
外部キー列リストには、table_nameにある参照先のプライマリ キーまたは代替キーと同数の列名が含まれている必要があります。参照元リストのi番目の列は、参照先リストで識別されるi番目の列に対応します。
各外部キーが参照する列のデータ型は、それに対応するREFERENCES列のデータ型と一致する必要があります。
各外部キーは、最大64列で定義できます。
1つのテーブルに対して、最大100のテーブル レベルの制約を定義できます。
外部キーREFERENCES制約は、次の項目には指定できません。
  • 識別列
  • グローバル一時トレース テーブル
  • グローバル一時テーブル
  • 揮発テーブル
  • キュー テーブル
CREATE TABLE(キュー テーブル形式)を参照してください。
CREATE TABLE AS構文を使用して外部キーのREFERENCES制約を新しいテーブルにコピーすることはできません。
WITH CHECK OPTION
参照整合性制約。リレーションシップの整合性は、1つのコンポーネントのトランザクション全体が完了したときにのみ検査されます。
テーブル属性外部キー制約では、この句は次のように指定します。
FOREIGN KEY (referencing_column_name) REFERENCES 
             WITH CHECK OPTION  referenced_table_name  
                         (referenced_column_name)
トランザクション内のいずれかの行が参照整合性のルールを違反した場合は、トランザクション全体がロールバックされます。
参照整合性ルールについては、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。
このオプションは、テンポラル テーブルに対しては無効です。詳細については、<Teradata Vantage™ - テンポラル テーブル サポート、B035-1182>を参照してください。
この句は、ANSI SQL:2011規格に対するTeradataの拡張機能です。