詳細
このキーワードは、トリガされる計算プロパティにのみ適用可能であり、他のプロパティでは無視されます。(トリガされる計算プロパティは、SqlComputed が True で、SqlComputeCode が指定されているが、Calculated および Transient が両方とも False のプロパティです。"クラスの定義と使用" の “計算プロパティの定義” を参照してください。)
このキーワードでは、このプロパティを再計算する条件を制御します。以下の場合に、再計算が行われます。
-
指定されているプロパティの変更
-
トリガ・イベントの発生
キーワードに %%INSERT または %%UPDATE の値が指定されている場合は、INSERT 呼び出しまたは UPDATE 呼び出しが、フィールド (プロパティ) の値のイベント・トリガ計算をそれぞれ指定します。
-
%%INSERT を指定すると、InterSystems IRIS は行がテーブルに挿入されたときにフィールドの値を計算します。InterSystems IRIS は、SQLComputeCode キーワードで指定されたコードを呼び出して、値を設定します。SQLComputeCode が同じフィールドを入力値として使用している場合、InterSystems IRIS はそのフィールドに対して明示的に指定された値を使用します。値が指定されていない場合、InterSystems IRIS は InitialExpression (これが指定されている場合) または NULL (InitialExpression が指定されていない場合) を使用します。
-
%%UPDATE を指定すると、InterSystems IRIS は行がテーブルに挿入されたときにフィールドの値を計算し、行が更新されたときにそれを再計算します。どちらの場合も、InterSystems IRIS は、SQLComputeCode キーワードで指定されたコードを呼び出して、値を設定します。SQLComputeCode が同じフィールドを入力値として使用している場合、InterSystems IRIS はそのフィールドに対して明示的に指定された値を使用します。値が指定されていない場合、InterSystems IRIS は前のフィールド値を使用します。
イベント・トリガ計算は、検証と正規化の直前に発生します (検証と正規化の後にデータベースへの値の書き込みが続きます)。
Note:
フィールド値のイベント・トリガ計算は、プロパティ値を計算するコードによっては、プロパティに対して明示的に指定されている値をオーバーライドすることがあります。
既定値
SqlComputeOnChange キーワードの既定値は、空の文字列です。