テンポラル参照制約はすべて「ソフトRI」である(つまりTeradata Databaseはこれらの制約を強制しない)ため、そのテーブルの参照整合性を確認または検証する責任は、もっぱらユーザーにあります。
整合性の保証という点からすれば、標準またはバッチ参照制約の宣言を使用しないでテーブルの参照整合性を保証する最善の方法は、関係するテーブルへの挿入、更新、および削除を処理するトリガーの集合などの一連の手続きによる制約を使用することです。
たとえば、参照整合性を施行するために親テーブル上にDELETE/UPDATEトリガー、子テーブル上にINSERT/UPDATEトリガーを作成する場合があります。以下の例では、SEQUENCED参照制約を施行するためにUPDATEトリガーを定義する方法を示しています。
REPLACE TRIGGER trg_ri_validator AFTER SEQUENCED VALIDTIME UPDATE OF column_of_interest ON child_table REFERENCING NEW_TABLE as New1 FOR EACH STATEMENT BEGIN ATOMIC ( ABORT 'RI Violation' FROM ( NONSEQUENCED VALIDTIME SELECT foreign_key_column FROM child_table WHERE foreign_key_column IS NOT NULL AND foreign_key_column NOT IN ( SELECT parent_table.primary_key_column FROM parent_table WHERE parent_table.validtime_column CONTAINS child_table.validtime_column AND child_table.foreign_key_column = parent_table.primary_key_column ) ) derived_table_name; ) END;
CREATE文とREPLACE TRIGGER文について、詳細はTeradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144を参照してください。
宣言制約が手続きによる制約よりも望ましい理由については、Teradata Vantage™ - データベースの設計、B035-1094で簡単に説明されています。アクティブに起動しているトリガーは、置換する予定の単純な宣言制約よりも、システム パフォーマンスにさらに悪い影響を与える可能性があります。
参照整合性制約のいずれの形式も施行しない場合には、参照制約違反が生じる時間と場所を検出できる一連の評価手順を施行することを強くお勧めします。
子テーブルのテンポラル参照制約の検証に使用できる問合わせを次に示します。