テーブル A に、テーブル B を変更できる更新後トリガー (トリガー A) があります。
また、テーブル B には更新後のトリガー (トリガー B) があります。これは変更を加えませんが、非正規化のサニティ チェックに対してテーブル A にクエリを実行します。
したがって、トリガー B は次の 2 つの方法のいずれかを起動できます。
- テーブル B を直接更新している場合、または
- テーブル A を更新してトリガー A が起動すると、テーブル B が更新されます。
ケース 2 では、ORA-04091: テーブル名が変更されています。トリガー/関数でエラーが表示されない可能性があります。これは正しいようです。
テーブル A が「悪い状態」であり、早期に終了するかどうかをトリガー B 内でチェックしたい (この場合、サニティ チェックを実行する必要はありません)。
トリガー内でこれをテストする最良の方法は何ですか? 例外を飲み込む例外ハンドラを追加するだけですか? もっと優雅なものはありますか?