現在地: Visual LANSA 開発者ガイド > 1. アプリケーション、フィールド、データベース、リポジトリの概要 > 1.6 アプリケーション・データベースの作成 > テーブルでデータベース・トリガーを使用可能にする
テーブルでデータベース・トリガーを使用可能にする

これを行うと、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 のようになります。