これを行うと、LANSAを介して行われるものかLANSA以外の手段を介して行われるものかを問わず、テーブルに行われるすべてのI/OでLANSAリポジトリのルールを利用できるようになります。例えば、RPGまたはCOBOLアプリケーションを使用してテーブルを更新すると、リポジトリの妥当性規則が強制され、LANSAトリガー・ファンクションがある場合は実行されます。さらに、テーブルに対してデータベース・トリガーが起動されるときには必ず、トリガー環境をユーザーが終了するためのプログラムDCTRGENVUEをジョブのライブラリ・リストに入れておくことで、正しいLANSA環境を確立できるようにする必要があります。データベース・トリガーは、RDMLX区画のテーブルに対してのみ使用可能です。
テーブルのデータベース・トリガーを使用可能にするとどうなるか
テーブルでデータベース・トリガーを使用可能にした場合、データベース・トリガーのプログラム名が必要です。初期状態では、これはDB <テーブル名>になっています (『LANSA テクニカル リファレンスガイド』の「データベース トリガー プログラム」参照) が、これにより OAM またはデータベース・トリガー・プログラム名との重複が発生する場合、上書きできます。次の機会にテーブルが処理可能になると、テーブルに対して定義されている妥当性規則やトリガーに従い、データベース・トリガー・プログラムが生成されて名前付きアクティベーション・グループで実行できるようコンパイルされ、データベース・トリガーの処理がOAMに、トリガーがデータベースに追加されます。
妥当性規則 | AND/ORトリガー・ファンクション | DBトリガーでの結果 |
|---|---|---|
挿入 | INSERT前 | INSERT前 |
N/A | INSERT後 | INSERT後 |
更新 | UPDATE前 | UPDATE前 |
N/A | UPDATE後 | UPDATE後 |
削除 | DELETE前 | DELETE前 |
N/A | DELETE後 | DELETE後 |
N/A | READ前 | * |
N/A | READ後 | READ後 |
N/A | OPEN前 | * |
N/A | OPEN後 | * |
N/A | CLOSE前 | * |
N/A | CLOSE後 | * |
注:「*」は、データベースに実装されないことを意味します。
データベース・トリガー・プログラムとデータベース・トリガーは、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 のようになります。