トリガ ISVの概要

次の表は、トリガを使用してアプリケーション・ロジックが使用できるISV(Intrinsic Special Variables)をすべて簡単に説明しています。$ZTWORMHOLE を除き、数値がある場合はゼロ(0)を返し、トリガ・コンテキスト外のコードが参照する場合は空の文字列を返します。これらのISVの詳しい説明と使用例については、 “ISVのトリガ” を参照してください。

$ZTNAME

トリガ・コンテキスト内で、$ZTNAMEはトリガ名を返します。$ZTNAMEは、トリガ・コンテキストの外側で空の文字列を返します。

$ZTDATA

KILL更新のためのノードのSETまたは $DATA(@$REFERENCE) のための $DATA(@$REFERENCE)#2 の代わりの高速パス。

[参考]$ZTDElim

SETトリガ・コンテキスト内で、$ZTDE[LIM] はトリガ定義の -delim で指定された区切り文字を返します。これによりトリガは区切り文字をルーチンにハードコードすることなく、$ZTUPDATEで定義された更新された部分文字を抽出することができます。SETトリガ・コンテキストの外側では、$ZTDELIM は nullです。

$ZTLEVEL

トリガのネストの現レベルを返します。(追加トリガのトリガコードでプログラムによって呼び出し)

$ZTOLDVAL

更新がトリガ呼び出しを引き起こしたノードの以前の(古い)値を返します。ノードが値を持たない場合は空の文字列を返します; ノードにデータ値があるかどうかを判断するには、$ZTDATAを参照してください。

$ZTRIGGEROP

SET(MERGE と $INCREMENT() 操作を含む)の場合、$ZTRIGGEROP は値 "S"を返します。KILLの場合、$ZTRIGGEROP は値 "K"を返します。ZKILLまたはZWITHDRAWの場合、$ZTRIGGEROP は値 "ZK"を返します。ZTRの場合、$ZTRIGGEROP は値 "ZTR"を返します。

$ZTSLATE

$ZTSLATE は、一番外側のトランザクション(TSTART が $TLEVELを0から1に取るとき)のために呼び出される連鎖またはネストされたトリガで使用可能にする文字列を指定できます。

$ZTVALUE

SETの場合、$ZTVALUEは、更新をトリガしたノードに割り当てられた値を持ちます。最初は、明示的(トリガ)SET操作で指定された値です。トリガ内で $ZTVALUE を変更すると、最終的にノードに割り当てられるGT.Mの値が変更されます。

$ZTUPDATE

GT.Mトリガがpiece(部分文字列)セパレータを指定するSETコマンドの場合、$ZTUPDATE は、$ZTOLDVAL と $ZTVALUE の現在の値の間で異なる個数の序数をコンマで区切ったリストを提供します。

$ZTWORMHOLE

$ZTWORMHOLEは、トリガの実行中に使用できるようにする最大128KBの文字列を指定できます。$ZTWORMHOLEを使用して、アプリケーション・コンテキストを提供したり、トリガ・ロジックにコンテキストを処理したりすることができます。$ZTWORMHOLE は、処理中も保持されるため、$ZTWORMHOLEはトリガの内側と外側の両方から読み書きできます。トリガ・コードが $ZTWORMHOLE を参照していない場合、GT.Mは(ジャーナル・ファイルまたはレプリケーション・ストリームを介して)MUPIPで使用できるようにしません。したがって、レプリケートを受けるセカンダリが起動プライマリとは異なるトリガコード(珍しい設定)を持ち、レプリケート・ノード上のトリガに$ZTWORMHOLEの情報が必要な場合、起動ノードのトリガは $ZTWORMHOLEを参照してGT.Mがデータを保持するようにする必要があります。 それは、複製ノード上の更新プロセスにより使用されることを含みます。GT.Mはトリガコード内で$ZTWORMHOLEを変更できるので、トリガされた更新が他の更新をトリガできるようになりますが、同じノードに一致するトリガの任意の順序付け(以下のトリガ連鎖についての説明を参照)のため、このようなアプローチでは、慎重な設計と実装が必要です。

トリガ実行環境セクションでは、次の「ISVとトリガの相互作用」について説明します: $ETRAP, $REFERENCE, $TEST, $TLEVEL, $ZTRAP

inserted by FC2 system