Hitachi

ノンストップデータベース HiRDB Version 10 システム導入・設計ガイド(UNIX(R)用)


11.19.6 参照制約とトリガ

〈この項の構成〉

(1) 参照制約動作のトリガ

参照制約動作にCASCADEを指定すると,HiRDBが内部的に参照表を更新するトリガを被参照表に対して生成します。HiRDBが内部的に生成するトリガは,次の場合に無効になるため,再作成する必要があります。ただし,HiRDBが生成したトリガだけを再作成することはできません。ALTER ROUTINEを使用して無効になったトリガすべてを再作成してください。また,インデクスの定義,又は削除でインデクス情報が無効になった場合は,ALTER ROUTINEにALL指定をしてトリガを再作成してください。

また,HiRDBが内部的に生成するトリガは,参照表削除(DROP TABLE,又はDROP SCHEMA)時に削除されます。

(2) 参照制約とユーザが定義したトリガの関係

トリガや参照制約が定義されている表に,更新系SQL(INSERT文,UPDATE文,又はDELETE文)を実行する場合の,トリガ,参照制約の整合性チェック,及び参照制約動作(HiRDBが参照制約定義時に内部的に生成するトリガ)の動作順序について説明します。これらの動作順序は,条件によって二つのパターンがあります。

パターン1の条件:

更新対象が被参照で参照制約動作の指定がRESTRICTだけの場合と,更新対象が参照表の場合

パターン2の条件:

更新対象が被参照で参照制約動作の指定にRESTRICT以外がある場合

なお,更新対象の表が参照表であり,かつ被参照表でもある場合は,被参照表の条件が優先されます。

二つのパターンの場合の動作順序をそれぞれ次に示します。

パターン1

[図データ]

注※

参照制約の整合性はすべてこの時点でチェックされます。チェック内容を次に示します。

  1. 更新対象が参照表の場合

    更新(INSERT,UPDATE)データが被参照表に含まれているかどうか

  2. 更新対象が被参照表の場合

    更新(UPDATE,DELETE)データが参照表に含まれているかどうか

  3. 更新対象が参照表で,かつ被参照表の場合

    上記1,2のチェック内容

パターン2

[図データ]

注※

参照制約の整合性はすべてこの時点でチェックされます。チェック内容はパターン1と同じです。