如何在postgresql13中显示正在运行的查询的当前模式

kiayqfof  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(218)

我在Postgres的一个数据库中使用多模式,例如

Postgres(instance)
  MyDB
    public
    MySchema1
      table1
      table2
    MySchema2
      table1
      table2
    MySchema3
      table1
      table2

它对我的用户开放,我的用户将运行查询,例如User 1:

set search_path=MySchema1;
select * from table1,table2;

用户2:

set search_path=MySchema2;
select * from table1,table2;

用户3:

set search_path=MySchema3;
insert into table3 select * from MySchema1.table1,MySchema2.table2;
select * from table3;

我想显示正在运行的查询的当前模式,但pg_stat_activity只能显示数据库名称,而不能显示模式名称。
我希望当前架构(search_path)为
| 用户名|图式|查询| query |
| - -----|- -----|- -----| ------------ |
| 用户1| MySchema1| select * from table 1,table 2;||
| 用户2| MySchema2| select * from table 1,table 2;||
| 用户3| MySchema3|在表3中插入select * from MySchema1.table1,MySchema2.table2;||

b4lqfgs4

b4lqfgs41#

无法获取另一个数据库会话的参数的当前设置。
我建议你使用参数application_name

SET search_path = myschema1;
SET application_name = myschema1;

另一个数据库会话的application_name的当前设置可以很容易地从pg_stat_activity进行查询。

相关问题