標準の参照整合性制約の追加および削除 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

参照整合性は、子の中の行が親テーブルの中で参照する行から孤立するのを防ぐためのルールです。親テーブルのプライマリ キーまたは代替キーと子テーブルの外部キーの間の参照整合性の関係が確立されると、子テーブルの中の外部キーを含む行を更新または削除した後でなければ、参照される親テーブルのキーを更新または削除できなくなります。

参照整合性制約の追加および削除には、以下のルールが適用されます。
  • REFERENCESオプションを含むALTER TABLEリクエストを実行するユーザーには、参照されるテーブルまたは参照されるテーブルの指定されたすべての列に対するREFERENCES権限が必要です。
  • 1つの外部キーの参照だけを追加または削除することができ、外部キーの追加または削除以外のオプションを含むことはできません。
  • 参照される親テーブルの列は、UNIQUE列属性を持つテーブルのプライマリ キー、またはUSIとして、独自に定義する必要があります。

    このルールは、固有になるように明示的に宣言する必要がない制約で、候補キーが参照されるテーブルのプライマリ キーとして機能する参照制約に適用する必要はない参照制約を参照してください。

  • 参照する子テーブル内の外部キー列は、参照されるテーブルのキーと同じでなければなりません。
  • 参照制約は、子テーブルと親テーブルのどちらのLOB列にも定義できません。
  • 以下の制約はどちらもキュー テーブルの定義に追加できません。
    • FOREIGN KEY … REFERENCES
    • REFERENCES
  • 参照先のターゲット テーブルがキュー テーブルの場合、次の制約のどちらも非キュー テーブルの定義に追加できません。
    • FOREIGN KEY … REFERENCES
    • REFERENCES
  • 参照関係内のキーの値はどちらも圧縮できません。列レベルの制約とそれに関連する参照列の比較は行なわれません。
  • 参照整合性は、グローバル一時テーブル、トレース テーブル、キュー テーブル、揮発テーブルではサポートされません。

参照整合性とその維持の一般的側面の詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。

以下のプロセスは、テーブルへの新しい参照制約(参照整合性を検査するかどうか)の追加に関するエラー処理プロセスについて説明しています。

  1. 新しい制約がテーブルに追加されると、エラー テーブルが生成されます。このエラー テーブルは、ミニバッチ バルク ロード エラーを記録するために作成したエラー テーブルとは異なります(CREATE ERROR TABLEを参照)。
    • この名前は、ターゲット テーブルの名前に適切な参照インデックス番号を接尾辞として付けたものになります。

      テーブルに対して定義された各外部キー制約に、固有の参照インデックス番号が割り当てられます。参照インデックス番号は、RI_Distinct_ChildrenVシステム ビューまたはRI_Distinct_ParentsVシステム ビュー(<Teradata Vantage™ - データ ディクショナリ、B035-1092>を参照)を使用して決定します。

    • その列およびプライマリ インデックスは、ターゲット テーブルのものと同じです。プライマリ インデックスをパーティション化する場合、親テーブルおよび子テーブルのパーティション列も同じにならなければなりません。
  2. エラー テーブルは、変更されるターゲット テーブルと同じユーザーまたはデータベースの下に作成されます。
    条件 システムの実行内容
    エラー テーブル用に生成されたのと同じ名前のテーブルが既に存在する場合 エラーが返されます。
    参照するテーブルの行に、参照されるテーブルの行にない外部キー列の値が含まれている場合 エラーは返されません。

    その代わりに、ターゲット テーブルにそのような行が見つかるたびに、エラー テーブルに行が1行挿入されます。

    それらの行を使用して、行なわなければならない訂正を判別します。

    参照されるテーブルと参照するテーブルの間での完全な参照整合性を保証するために2つのテーブル内の値を訂正する作業は、自分で行なってください。

    また、エラー テーブルの維持(エラーを訂正した後の削除など)も自分で実行してください。