4

DB2(v9.7)を介して再帰トリガーを制御しようとしていますが、残念ながら、IBMの資料には、現在のトリガー呼び出しがどのレベルの再帰にあるかを知る方法が記載されていません。

私はsql-serverにこの関数があることを発見しました:trigger_nestlevel()、それは基本的に私が望むことをします(実際のトリガー再帰呼び出しレベルを知っています)。それで、DB2に同等の機能があるかどうか知りたいです。

4

1 に答える 1

0

残念ながら、DB2にはこのための関数やストアドプロシージャがありません。最大16のトリガーカスケードレベルを持つことができます。

ハードコーディングされており、変更できません。

ところで、DB2では、トリガーによって別のトリガーが起動される場合、それはトリガーカスケードと呼ばれます。また、NOCASCADEキーワードによるカスケードを回避できます。

同じトリガーの呼び出しを避けたい場合は、回避策があります。

  1. テーブルのビューを作成する=>テーブル1からSelect*としてビューvTable1を作成する
  2. vTable1のINSTEADOFTRIGGERを作成します。=>vTable1のINSERTの代わりにCREATETRIGGERTRG_INSERT
  3. TRG_INSERTで、table1に挿入します。
于 2012-12-21T22:09:54.737 に答える