トリガーおよび参照整合性 - 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
以下のトリガーのケースでは、あらゆる形式の参照整合性のリクエストに対して、トリガーが参照整合性違反エラーを返します。
  • トリガー文が、関係内の子テーブルに対するUPDATE操作である場合。
  • トリガー文が、関係内の子テーブルに対するDELETE操作である場合。
  • トリガーがカスケードされている場合。
以下のトリガーのケースでは、バッチ参照整合性を使用して関係が定義されている場合に限り、参照整合性関係を持つテーブルに対してトリガーが有効になります(バッチ参照整合性制約を参照してください)。
  • トリガー文が、関係内の親テーブルに対するDELETE操作である場合。
  • トリガー文が、関係内の親テーブルに対するUPDATE操作である場合。
  • トリガー文が、関係内の子テーブルに対するINSERT操作である場合。
  • トリガー文が、関係内の子テーブルに対するINSERT操作であり、INSERT … SELECT操作をトリガーするアクション文として定義する場合。
  • カスケードされたトリガーの場合、システムではINSERT操作のみをトリガー文として扱います。たとえば、関係内の親テーブルに対するINSERT操作および子テーブルに対するINSERT操作です。

    カスケードされたその他のトリガーは無効です。

次のテーブル定義を考えてみましょう。テーブルを定義することで、参照整合性のチェック階層が構成されます。バッチRIは、テーブルchild_tab(parent_tabを参照)およびテーブルgrandchild_tab(child_tabを参照)で定義されます。

これらのテーブルに対する外部キーは、FOREIGN KEYを指定するのではなく、REFERENCES句を使用して暗黙に定義されていることに注意してください。ただし、定義された参照整合性チェック項目は、キーワードにFOREIGN KEYを指定した場合と同じになります。

トリガーはこれらのテーブルで定義されます。

     CREATE TABLE parent_tab (
       prime_key INTEGER NOT NULL,
       column_2  INTEGER,
       null_col  CHARACTER DEFAULT NULL)
     UNIQUE PRIMARY INDEX (prime_key);

     CREATE TABLE child_tab ( 
       prime_key INTEGER NOT NULL,
       null_col  CHARACTER DEFAULT NULL,
       for_key   INTEGER REFERENCES WITH CHECK OPTION parent_tab
                 (prime_key))
     UNIQUE PRIMARY INDEX (prime_key);

     CREATE TABLE grandchild_tab ( 
       prime_key INTEGER NOT NULL,
       column_3  INTEGER,
       grc_key   INTEGER REFERENCES WITH CHECK OPTION child_tab
                 (prime_key))
     UNIQUE PRIMARY INDEX (prime_key);

サポートされるテーブルおよび各トリガー文の参照レベルの定義について考えてみましょう。

レベル トリガー文 RI関係内のテーブル
1
  • DELETE

    または

  • UPDATE
2
  • DELETE

    または

  • UPDATE

次の表に、対となるテーブルのバッチ参照整合性関係を示します。

レベル テーブル間のバッチ参照整合性関係
1
  • parent_tab
  • child_tab
2
  • child_tab
  • grandchild_tab