Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの保守 » スケジュールとイベントの使用によるタスクの自動化 » イベント・ハンドラの概要

 

イベント・ハンドラの開発

イベント・ハンドラは、スケジュールされたイベント用か、システム・イベント処理用かにかかわらず、複合文を含んでいて、多くの点でストアド・プロシージャに似ています。ループや条件付き実行などを追加することができます。また、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 関数 [システム]を参照してください。