このトピックでは、ログオンとログオフのトリガーについて説明します。
概要
ログオントリガーとログオフトリガーはイベントトリガーであり、データベースにログオンしたりログオフしたりするときに、指定された関数またはストアドプロシージャをトリガーできます。 ログオンとは、データベースに接続したときにPostgresバックエンド
プロセスが開始されることを意味します。 ログオフは、Logoffコマンドを開始したときにPostgresバックエンド
プロセスが終了することを意味します。
構文
イベント名は
after_user_logon
とbefore_user_logoff
です。 CREATE EVENT TRIGGER trigger_name event_login_or_logoff
EXECUTE FUNCTION_or_PROCEDURE func_name '(' ')'
event_login_or_logoff:
after_user_logon
| onbefore_user_ログオフ
注意事項
- 接続プールや接続プロキシなどのサードパーティ製ツールを使用している場合、クライアントが切断または接続されたときにログオンおよびログオフのトリガーがトリガーされることはありません。
- 他のイベントトリガーと同様に、イベント (ログオンなど) に複数のトリガーがあり、トリガーの1つが失敗した場合、すべてのトリガーのアクションが終了し、トランザクションがロールバックされます。
- ログオフトリガーがトリガーされてエラーが発生すると、エラーの詳細がログに生成されます。 エラーの詳細はログにのみ存在し、クライアントが終了したためにクライアントによって受信されない場合があります。 ログオントリガーがトリガーされてエラーが発生すると、クライアントの準備ができていないため、エラーの詳細がログに生成されます。 PolarDBは、次の警告メッセージをクライアントに送信しようとします。
"ユーザーログイン後にイベントトリガーが発生します。 詳細については、「
のログ」をご参照ください。
例
- テスト用のデータを準備します。
テーブルの作成users_log ( idシリアル、 user_name VARCHAR2(64) 、 database_name VARCHAR2(64) 、 イベントVARCHAR2(64) 、 client_ip VARCHAR2(64) 、 タグVARCHAR2(64) 、 instance_num int ); CREATE関数sample_event_triggerリターンevent_trigger is begin polar_loginout.users_logに挿入 (user_name,database_name,event,client_ip, tag, instance_num) 値 (polar_login_user,polar_database_name,tg_event,polar_client_ip,tg_tag,polar_instance_num); 終了;
- ログイントリガーを作成します。
CREATEイベントトリガーlogin_event_trigger on after_user_logon execute procedure public.sample_event_trigger();
- ログオフトリガーを作成します。
CREATEイベントトリガーlogout_event_trigger on before_user_logoff execute procedure public.sample_event_trigger();
- ログイントリガーを削除します。
DROPイベントトリガーlogin_event_trigger;
- ログオフトリガーを削除します。
DROPイベントトリガーlogout_event_trigger;