トリガーの作成時と使用時に適用される制限は、以下のとおりです。
- トリガーを定義できるのは、永続的な基本テーブルに対してだけです。次のデータベース オブジェクトに対しては、トリガーを定義できません。
- エラー テーブル
- グローバル一時トレース テーブルなどのグローバル一時テーブル
- ビュー
- 揮発テーブル
- BEFORE文トリガーは無効です。
- BEFOREトリガーには、トリガーされるアクション(トリガーされるSQL文)としてデータ変更文を指定できません。
- 同じテーブルにトリガーとハッシュ インデックスを定義することはできません。
- UDTに順序付けが定義されている場合に限って、WHEN句にUDT比較を指定できます。
- WHEN条件でNEW_TABLE、OLD_TABLE、またはOLD_NEW_TABLE遷移テーブルを参照する場合は、以下の方法で参照を作成するSYSUDTLIB。
- 副クエリーから作成する。
- 参照される遷移テーブルの相関名を使用して作成する。
この目的で通常使用される副クエリーは、スカラー値を返す集約です。
- 集約を、WHEN句に指定された検索条件の左側に使用することはできません。
集約を、検索条件の右側に使用することはできます。
- 位置決めされた(更新可能カーソル)更新および削除操作は、トリガーを起動できません。そのようにすると、エラーになります。
更新または削除操作のカーソルを位置付ける前に、対象テーブルに定義されているすべてのトリガーを使用不能にする必要があります。
- INSERT … SELECT AND CONSUME文は、以下のどちらとしても使用できません。
- トリガーされるアクション文
- トリガーする文
- 再帰的ビュー、WITH句、またはトリガーの定義内のWITH RECURSIVE句を参照できません。