これを行うと、LANSAを介して行われるものかLANSA以外の手段を介して行われるものかを問わず、テーブルに行われるすべてのI/OでLANSAリポジトリのルールを利用できるようになります。例えば、RPGまたはCOBOLアプリケーションを使用してテーブルを更新すると、リポジトリの妥当性規則が強制され、LANSAトリガー・ファンクションがある場合は実行されます。さらに、テーブルに対してデータベース・トリガーが起動されるときには必ず、トリガー環境をユーザーが終了するためのプログラムDCTRGENVUEをジョブのライブラリ・リストに入れておくことで、正しいLANSA環境を確立できるようにする必要があります。データベース・トリガーは、RDMLX区画のテーブルに対してのみ使用可能です。
テーブルのデータベース・トリガーを使用可能にするとどうなるか
テーブルでデータベース・トリガーを使用可能にした場合、データベース・トリガーのプログラム名が必要です。初期状態では、これはDB <テーブル名>になっています (『LANSA テクニカル リファレンスガイド』の「データベース トリガー プログラム」参照) が、これにより OAM またはデータベース・トリガー・プログラム名との重複が発生する場合、上書きできます。次の機会にテーブルが処理可能になると、テーブルに対して定義されている妥当性規則やトリガーに従い、データベース・トリガー・プログラムが生成されて名前付きアクティベーション・グループで実行できるようコンパイルされ、データベース・トリガーの処理がOAMに、トリガーがデータベースに追加されます。
|
注:「*」は、データベースに実装されないことを意味します。
データベース・トリガー・プログラムとデータベース・トリガーは、I/Oモジュール・ライブラリ内に作成されます。トリガーには次のような名前が付けられます。
LANSA_<program library>_<partition>_<library>_<table>_<trigger time>_<trigger event>
表記の説明:
<program library>は、DCXPGMLIB などの LANSA プログラム・ライブラリです。
<partition>は、PRD などの LANSA 区画です。
<library>は、DCXPRDLIB などのテーブル・ライブラリです。
<table>は、PSLMST などのテーブル名です。
<trigger time>は、BEFORE などのトリガー時間です。
<trigger event>は、INSERT などのトリガー・イベントです。
トリガー名全体の名前は、例えば LANSA_DCXPGMLIB_PRD_DCXPRDLIB_PSLMST_BEFORE_INSERT のようになります。