Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SqlComputeOnChange

このキーワードは、プロパティをいつ再計算するかを制御します。トリガされる計算プロパティのみに適用します。

使用法

プロパティをいつ再計算するかを指定するには、以下の構文を使用します。

Property name As classname [ SqlComputed, SqlComputeCode=sqlcomputecode, SqlComputeOnChange = propertynames ];

sqlcomputecode は "SqlComputeCode" で説明しています。propertynames は、単一のプロパティ名または複数のプロパティ名のコンマ区切りリストのいずれかです。この値には、値 %%INSERT または %%UPDATE を含めることもできます。

SqlFieldname によって与えられる値ではなく、実際のプロパティ名を使用する必要があることに注意してください。

詳細

このキーワードは、トリガされる計算プロパティにのみ適用可能であり、他のプロパティでは無視されます。(トリガされる計算プロパティは、SqlComputed が True で、SqlComputeCode が指定されているが、Calculated および Transient が両方とも False のプロパティです。"Caché オブジェクトの使用法" の “計算プロパティの定義” を参照してください。)

このキーワードでは、このプロパティを再計算する条件を制御します。以下の場合に、再計算が行われます。

  • 指定されているプロパティの変更

  • トリガ・イベントの発生

キーワードに %%INSERT または %%UPDATE の値が指定されている場合は、INSERT 呼び出しまたは UPDATE 呼び出しが、フィールド (プロパティ) の値のイベント・トリガ計算をそれぞれ指定します。

  • %%INSERT を指定すると、Caché は行がテーブルに挿入されたときにフィールドの値を計算します。Caché は、SQLComputeCode キーワードで指定されたコードを呼び出して、値を設定します。SQLComputeCode が同じフィールドを入力値として使用している場合、Caché はそのフィールドに対して明示的に指定された値を使用します。値が指定されていない場合、Cache は InitialExpression (これが指定されている場合) または NULL (InitialExpression が指定されていない場合) を使用します。

  • %%UPDATE を指定すると、Caché は行がテーブルに挿入されたときにフィールドの値を計算し、行が更新されたときにそれを再計算します。どちらの場合も、Caché は、SQLComputeCode キーワードで指定されたコードを呼び出して、値を設定します。SQLComputeCode が同じフィールドを入力値として使用している場合、Caché はそのフィールドに対して明示的に指定された値を使用します。値が指定されていない場合、Caché は前のフィールド値を使用します。

イベント・トリガ計算は、検証と正規化の直前に発生します (検証と正規化の後にデータベースへの値の書き込みが続きます)。

Note:

フィールド値のイベント・トリガ計算は、プロパティ値を計算するコードによっては、プロパティに対して明示的に指定されている値をオーバーライドすることがあります。

既定値

SqlComputeOnChange キーワードの既定値は、空の文字列です。

関連項目

FeedbackOpens in a new tab