【问题标题】:pg_listening_channels() is not returning the channels namepg_listening_channels() 没有返回频道名称
【发布时间】:2023-03-16 07:40:01
【问题描述】:

1) 我想知道我的数据库中列出的频道名称,但 pg_listening_channels() 名称总是返回空值(空白),即使某些客户端正在侦听此数据库。

下面是我的 pgsql 代码。这段代码有什么问题吗。

CREATE OR REPLACE FUNCTION query_trigger()
  RETURNS trigger AS
$BODY$
DECLARE
 send_message  text;
 queryString  text;
 channelNameArray text[];
 channelNames text;
      BEGIN
        queryString = current_query();
        channelNameArray = pg_listening_channels();
        channelNames = array_to_string(channelNameArray , ',');

           send_message := queryString || '  ' || channelNames;
           insert into "Client_Address" values (channelNames , queryString) ;
           PERFORM pg_notify('myChannel', send_message  );
           RETURN NULL;
          END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION query_trigger() OWNER TO postgres;

Schema of Client_Address table
Notify_node   text;
query         text;  

【问题讨论】:

    标签: postgresql-9.2


    【解决方案1】:

    pg_listening_channels 报告在您自己的会话中收听。它不会(也不能)报告其他会话的收听情况。

    无法直接通过系统获取 Pg 9.2 中的信息。您始终可以使用信息维护一个边表,但在保持信息同步方面通常会遇到问题。

    你为什么要这样做?像这样使用NOTIFY 有点奇怪。为什么不让每个人都在同一个频道上收听并通过一个电话通知他们所有人?

    您是否正在尝试编写审计日志?如果是这样,请考虑使用现有解决方案之一或仅使用 csv 日志记录。

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2021-09-27
      • 2019-09-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2023-04-03
      相关资源
      最近更新 更多