すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ログオンとログオフトリガー

最終更新日:Jun 21, 2024

このトピックでは、ログオンとログオフのトリガーについて説明します。

概要

ログオントリガーとログオフトリガーはイベントトリガーであり、データベースにログオンしたりログオフしたりするときに、指定された関数またはストアドプロシージャをトリガーできます。 ログオンとは、データベースに接続したときにPostgresバックエンドプロセスが開始されることを意味します。 ログオフは、Logoffコマンドを開始したときにPostgresバックエンドプロセスが終了することを意味します。

構文

イベント名はafter_user_logonbefore_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;