イベント・ハンドラは、スケジュールされたイベント用か、システム・イベント処理用かにかかわらず、複合文を含んでいて、多くの点でストアド・プロシージャに似ています。ループや条件付き実行などを追加することができます。また、SQL Anywhere デバッガを使ってイベント・ハンドラをデバッグすることができます。
イベント・ハンドラが実行されるたびに、エラーが発生しなかった場合、COMMIT が発生します。エラーが生成された場合は、ROLLBACK が発生します。
ストアド・プロシージャとは異なり、イベント・ハンドラには引数がありません。EVENT_PARAMETER 関数を使用して、イベントがトリガされたコンテキストに関する情報にアクセスできます。返される情報には、イベントがトリガされた接続 ID とユーザ ID、イベント名、実行回数が含まれます。EVENT_PARAMETER 関数 [システム]を参照してください。
開発中は、好きなときにイベント・ハンドラをトリガできた方が便利です。TRIGGER EVENT 文を使うと、トリガ条件やスケジュールした時刻に関係なく、明示的にイベントを実行できます。ただし、無効なイベント・ハンドラを TRIGGER EVENT によって実行することはできません。TRIGGER EVENT 文を参照してください。
運用データベース上でイベント・ハンドラを開発するのはよいことではありませんが、Sybase Central から、または明示的に ALTER EVENT 文を使ってイベント・ハンドラを無効にすることができます。
複数のイベントを処理するアクションを 1 つにまとめておくと便利です。たとえば、データベース・ファイルまたはログ・ファイルを格納しているデバイスのディスク領域が少なくなってきたときに、通知アクションを実行することができます。これを実行するには、ストアド・プロシージャを作成し、各イベント・ハンドラの本文から呼び出します。このとき、必要なコンテキスト情報をパラメータとしてプロシージャに渡します。
イベント・ハンドラのデバッグは、ストアド・プロシージャのデバッグによく似ています。イベント・ハンドラは、イベント・リストに表示されます。
詳細と段階を追った手順については、イベント・ハンドラのデバッグを参照してください。
SET HIDDEN 句を使用して、イベント・ハンドラの定義を隠すことができます。SET HIDDEN 句を指定すると、ISYSEVENT システム・テーブルの action カラムに格納されているイベント・ハンドラの定義が永続的に難読化されます。ALTER EVENT 文を参照してください。
また、NumActive イベント・パラメータを使用して、現在アクティブになっている特定のイベント・ハンドラのインスタンスの数を判断できます。この関数は、一定時間に 1 つのイベント・ハンドラで 1 つのインスタンスだけを実行させるように制限する場合に役立ちます。
NumActive イベント・パラメータの詳細については、EVENT_PARAMETER 関数 [システム]を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |