LANSA データベース・トリガーに関するその他の重要な考察事項
- データベース・トリガーは常に呼び出されます。例えば、データベース・トリガーが使用可能になっているテーブルにREAD後トリガーが定義されている場合、そのREAD後トリガーは、そのテーブルにIBM iコマンドのDSPPFMを使用している場合にも呼び出されます。また、DELETE前またはDELETE後データベース・トリガーがあるテーブルでは、CLRPFMは使用できません。
- LANSAデータベース・トリガーは、RDMLX区画でのみ実行できます。LANSAデータベース・トリガーが使用可能になっているLANSAテーブルを、RDMLX区画にインポートすることはできません。
- IBM i外部テーブル(とインデックス)を非LANSAオブジェクトとしてエクスポートする場合、エクスポートを実行する前にデータベース・トリガーを手動で削除し、エクスポートが完了した後に再び追加する必要があります。
- 既存の3GLアプリケーション内で使用されているテーブルに対してLANSAデータベース・トリガーを使用可能にする際には注意してください。既存の3GLアプリケーションのコーディングによっては、データベース・トリガーの失敗通知が戻されるとアプリケーションが中断し、更新途中のデータベースが残される場合があるからです。
- READの後、データベース・トリガーは、キーを持つRPGのSETLL/SELGT、C APIの_Rlocate、およびCOBOLの同等の処理を行った結果として実行されます。これは、DB2 for IBM i の設計上の決定事項です。
- DBトリガーが添付され、使用可能になっているテーブルに対して可能なことには制限事項があります。例えば、DELETE前またはDELETE後のトリガーがあるテーブルをCLRPFMの対象にすることはできません。また、INSERT前またはINSERT後のトリガーがあるテーブルをINZPFMの対象にすることはできません。このような制限事項の詳細については、『DB2 for i5/OS Database Programming』マニュアル (英語) の「Triggers and their relationship to other IBM i functions」に関するセクション、またはIBM InfoCenterの同等のセクションを参照してください。
- LANSAテーブルのLANSAデータベース・トリガーをオンにした後は、LANSAのパフォーマンスが影響を受けます。これは避けられません。この状況でデータベース・トリガーを実行してはいけないと検知する方法が、データベース自身に備わっていないからです。データベース・トリガー・プログラムは、実行され、LANSAからのI/Oによって実行されたことが判断されてから戻ります。
- LANSAデータベース・トリガーは、名前付きのアクティブ化グループ内で実行されるため、コミット制御を使用する場合には注意する必要があります。LANSAデータベース・トリガーを使用可能にする前に、IBM InfoCenterで、コミット制御に関するセクションを読んで理解することを強くお勧めします。特に、LANSAデータベース・トリガー・プログラムまたはそれが呼び出したものによって、コミット制御下のテーブルにデータベースの挿入/更新/削除が発生し、アクティベーション・グループ・レベルのコミット定義が使用される場合、既存のアプリケーションへの影響をさまざまな状況でテストし、アプリケーションの整合性が確実に保持されるようにする必要があります。