データベース・マネージャーを非活動状態のシステムから活動状態のシステムに変えるには、トリガー関数で表される機能を使用してください。 トリガー は、特定の基本表に対する更新操作によって活動化される、または起動される 一連のアクションを定義します。これらのアクションは、データベースに他の変更を行ったり、 DB2 の外で操作を実行したり (たとえば、電子メールを送ったり、ファイルにレコードを書き込む)、更新操作を妨害する例外を起こしたりすることがあります。
トリガーを使用すると、業務規則などの一般的な保全形式をサポートすることができます。たとえば、顧客の要求以上の注文を断りたい業務があるとします。この制約は、トリガーを使って実施することができます。トリガーは一般に、 過渡的な 業務規則を収集する強力な機構です。過渡的な業務規則は、さまざまな状態のデータを含む規則です。
たとえば、給料は 10 パーセント以上増やせないと仮定します。この規則を検査するには、増える前と後の給料の額を比較しなければなりません。データの複数の状態が関係していない規則では、検査と参照保全に関する制約がより適していることがあります (詳細については、SQL 解説書 を参照してください)。検査および参照に関する制約は、その宣言の意味のため、過渡的でない制約として使用することをお勧めします。
また、要約データを自動的に更新するタスクなどに対してトリガーを使うこともできます。トリガーは、そのようなアクションをデータベースの一部として保持したり、それらが自動的に行われることを確認することにより、データベースの保全性を高めます。たとえば、ある会社で雇用されている従業員数を自動的に追跡したいとします。
Tables: EMPLOYEE (as in Sample Tables) COMPANY_STATS (NBEMP, NBPRODUCT, REVENUE)
次の 2 つのトリガーを定義できます。
CREATE TRIGGER NEW_HIRED AFTER INSERT ON EMPLOYEE FOR EACH ROW MODE DB2SQL UPDATE COMPANY_STATS SET NBEMP = NBEMP + 1
CREATE TRIGGER FORMER_EMP AFTER DELETE ON EMPLOYEE FOR EACH ROW MODE DB2SQL UPDATE COMPANY_STATS SET NBEMP = NBEMP - 1
具体的には、以下の目的でトリガーを使用できます。
データベース・マネージャーでトリガーを使用すると、次のような結果が得られます。
トリガーはリレーショナル・データベースに保管されるので、トリガーにより実行されるアクションは各アプリケーションごとにコーディングする必要はありません。
トリガーは一度定義するだけで、表を変更する任意のアプリケーションに対して使用することができます。
営業方針の変更時には、各アプリケーション・プログラムを変更する代わりにそれに対応するトリガーだけを変更する必要があります。