如何在PL / pgSQL函数中获取已执行的客户端详细信息

时间:2018-09-04 09:13:26

标签: postgresql plpgsql

请让我知道,我如何才能在PL / pgSQL函数($whoexecuted之内)中获取函数执行的客户机(仅单个客户机)的详细信息。我正在获取当前所有活动客户的详细信息。 按照以下代码。

begin
select ps.usename, ps.client_addr,ps.application_name from pg_stat_activity ps
where state = 'active'
and ps.usename in('user1') into pg_stat_activity_rowtype
;

1 个答案:

答案 0 :(得分:0)

pg_stat_activity的内容也可以从PLpgSQL获得。因此您可以使用

do $$
declare r record;
begin
  for r in select * from pg_stat_activity where pid = pg_backend_pid()
  loop
    raise notice '%', r;
  end loop;
end;
$$;

可以从某些来源收集这些数据:

select current_user, session_user, current_database(), inet_client_addr(), current_setting('application_name');
┌──────────────┬──────────────┬──────────────────┬──────────────────┬─────────────────┐
│ current_user │ session_user │ current_database │ inet_client_addr │ current_setting │
╞══════════════╪══════════════╪══════════════════╪══════════════════╪═════════════════╡
│ pavel        │ pavel        │ postgres         │                  │ psql            │
└──────────────┴──────────────┴──────────────────┴──────────────────┴─────────────────┘
(1 row)

更多文档:

  1. https://www.postgresql.org/docs/current/static/functions-admin.html
  2. https://www.postgresql.org/docs/current/static/functions-info.html