スケーラブルデータベースサーバ HiRDB Version 8 解説(Windows(R)用)

[目次][用語][索引][前へ][次へ]

5.6 トリガ

トリガを定義すると,ある表への操作(更新,挿入,及び削除)を契機に自動的にSQL文を実行させることができます。トリガは,定義する表,トリガを動作させる契機となるSQL(トリガ契機となるSQL),自動的に実行させるSQL文(トリガSQL文),その動作が実行される条件(トリガ動作の探索条件)などを指定して定義します。トリガを定義した表にトリガ動作の探索条件を満たすSQL文が実行されると,トリガSQL文が自動的に実行されます。トリガの概要を次の図に示します。

図5-7 トリガの概要

[図データ]

〔説明〕
商品管理表に,価格が変更されると商品管理履歴表に変更内容を蓄積するトリガを定義しています。UAPからトリガ契機となるSQL(この場合,UPDATE)が実行されると,自動的に商品管理履歴表に価格が変更になった品番,変更前の価格,及び変更後の価格が追加されます。

なお,トリガを表に定義すると,その表を使用する関数,手続き及びトリガのSQLオブジェクトは無効になるため,SQLオブジェクトを再作成する必要があります。また,トリガが使用しているリソース(表,インデクスなど)が定義,定義変更,又は削除された場合,トリガのSQLオブジェクトは無効になるため,SQLオブジェクトを再作成する必要があります。詳細は,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

<この節の構成>
(1) 適用基準
(2) トリガ定義の準備
(3) トリガの定義

(1) 適用基準

UAPで次のような処理をする場合,トリガの使用をお勧めします。

(2) トリガ定義の準備

トリガを定義すると,指定したトリガ動作手続きのSQLオブジェクトが自動的に作成され,データディクショナリLOB用RDエリアに格納されます。そのため,トリガを定義する場合,データディクショナリLOB用RDエリアに十分な容量を確保しておく必要があります。データディクショナリLOB用RDエリアの容量の見積もりについては,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

また,トリガ契機となるSQLを実行するためには,SQLオブジェクト用バッファ長を指定するときにトリガのSQLオブジェクトについても考慮しておく必要があります。SQLオブジェクト用バッファ長の見積もりについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。

(3) トリガの定義

トリガの定義,SQLオブジェクトの再作成,及び削除には次の定義系SQLを使用します。

CREATE TRIGGER
トリガを定義します。トリガは所有する表にだけ定義でき,ほかのユーザが所有する表には定義できません。

ALTER TRIGGER
既に定義されているトリガのSQLオブジェクトを再作成します。定義系SQLのALTER ROUTINEでも再作成できます。

DROP TRIGGER
トリガを削除します。