各イベント定義には対応するシステム・イベントがあります。また、イベント定義は 1 つまたは複数のトリガ条件を持ちます。システム・イベントに対するトリガ条件が満たされるとイベント・ハンドラがトリガされます。
トリガ条件は CREATE EVENT 文の WHERE 句に含まれていて、AND キーワードを使用して結合できます。各トリガ条件は次のフォームで定義します。
event_condition( condition-name ) comparison-operator value
condition-name 引数は、さまざまなイベント・タイプに対応できるようにあらかじめ設定されている文字列から 1 つを選択します。たとえば、DBSize (メガバイト単位のデータベース・ファイル・サイズ) を使用して GrowDB システム・イベントに適したトリガ条件を構築することができます。データベース・サーバは、条件名とイベント・タイプの対応をチェックしません。イベント・タイプのコンテキストで条件に意味があるかどうかを確認する必要があります。
トランザクション・ログのサイズを 10 MB に制限します。
CREATE EVENT LogLimit TYPE GrowLog WHERE event_condition( 'LogSize' ) > 10 HANDLER BEGIN IF EVENT_PARAMETER( 'NumActive' ) = 1 THEN BACKUP DATABASE DIRECTORY 'c:\\logs' TRANSACTION LOG ONLY TRANSACTION LOG RENAME MATCH; END IF; END; |
データベース・ファイルを格納しているデバイスの空き領域が 10 % を下回ると管理者に通知しますが、ハンドラは 5 分間 (300 秒) に 2 回以上実行しません。
CREATE EVENT LowDBSpace TYPE DBDiskSpace WHERE event_condition( 'DBFreePercent' ) < 10 AND event_condition( 'Interval' ) >= 300 HANDLER BEGIN CALL xp_sendmail( recipient='DBAdmin', subject='Low disk space', "message"='Database free disk space ' || EVENT_PARAMETER( 'DBFreeSpace' ) ); END; |
データベースに侵入しようとする者を発見すると、管理者に通知します。
CREATE EVENT SecurityCheck TYPE ConnectFailed HANDLER BEGIN DECLARE num_failures INT; DECLARE mins INT; INSERT INTO FailedConnections( log_time ) VALUES ( CURRENT TIMESTAMP ); SELECT COUNT( * ) INTO num_failures FROM FailedConnections WHERE log_time >= DATEADD( minute, -5, current timestamp ); IF( num_failures >= 3 ) THEN SELECT DATEDIFF( minute, last_notification, current timestamp ) INTO mins FROM Notification; IF( mins > 30 ) THEN UPDATE Notification SET last_notification = current timestamp; CALL xp_sendmail( recipient='DBAdmin', subject='Security Check', "message"= 'over 3 failed connections in last 5 minutes' ) END IF END IF END; |
サーバが 10 分間以上アイドル状態にあると、処理を実行します。1 時間に 2 回以上は実行しません。
CREATE EVENT Soak TYPE ServerIdle WHERE event_condition( 'IdleTime' ) >= 600 AND event_condition( 'Interval' ) >= 3600 HANDLER BEGIN MESSAGE ' Insert your code here ... ' END; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |