TRIGGERMAXDEPTHオプションは、Oracle OLAPが同時に実行可能な$NATRIGGERプロパティ式の最大数を指定するオプションです。
使用上の注意
$NATRIGGERプロパティについて
TRIGGERMAXDEPTHオプションは、変数の$NATRIGGERプロパティとともに動作します。
再帰的トリガー
RECURSIVEオプションがYESに設定されていないかぎり、$NATRIGGER式の実行中にこの式で実行される計算式、プログラムまたはその他の$NATRIGGER式で、再帰的な$NATRIGGER式の実行はできません。TRIGGERMAXDEPTHオプションは、$NATRIGGER式の再帰の深さを制御し、Oracle OLAPが誤動作する可能性のある無限の再帰や過剰に深い再帰を防止します。
例
例5-106 トリガーの深さの最大値の設定
この例では、トリガーの深さの最大値を設定し、その最大値を超えた後、深さをより大きい値に設定します。通常、TRIGGERMAXDEPTHの値は、この例で使用する2
よりもずっと大きい値です。デフォルト値は50
です。
DEFINE d1 INTEGER DIMENSION MAINTAIN d1 ADD 2 DEFINE v1 DECIMAL <d1> PROPERTY '$NATRIGGER' 'v2 + 1' DEFINE v2 DECIMAL <d1> PROPERTY '$NATRIGGER' 'v3 + 1' DEFINE v3 DECIMAL <d1> PROPERTY '$NATRIGGER' 'v4 + 1' DEFINE v4 DECIMAL <d1> v4(d1 1) = 333.3 RECURSIVE = YES TRIGGERMAXDEPTH = 2 SHOW v1
この文によって生成される出力は、次のとおりです。
ERROR: Depth of NA trigger calls exceeds allowable (maximum depth 2)
次の文を実行すると、トリガーの深さの最大値がより大きい値に設定され、変数の値が表示されます。
TRIGGERMAXDEPTH = 3 SHOW v1
この文によって生成される出力は、次のとおりです。
336.3