首页 > 解决方案 > 带有行子集的 pg_notify

问题描述

嗨,我正在尝试研究如何将新行的子集作为 json 返回给 pg_notify 函数。

我目前正在使用

create or replace function public.notify_site()
returns trigger
language plpgsql
as $function$
begin
perform pg_notify('ppsite', row_to_json(NEW)::text);
      RETURN new;
    END;
$function$;

当表的后插入触发器很好时,它可以很好地返回整行数据,但是,我想要做的是只返回 NEW 的一个子集而不是整个东西。如果我可以在 NEW 或类似的东西上返回选择的结果,那将是非常酷的。这是可能的还是我的接收应用程序需要对数据进行分类?

说清楚,我想用say返回json

NEW.c1、NEW.c2、NEW.c5 而不是整行大约 50 个值。

塔。

标签: postgresqltriggers

解决方案


您可以从新记录中定义您想要的投影:

 CREATE OR REPLACE FUNCTION public.notify_site()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
    declare
      my_record record;
    begin
      select NEW.id as id, NEW.some_data as some_data INTO my_record;
      perform pg_notify('pp_site', row_to_json(my_record)::text);
      return NEW;
    end;
$function$
;

推荐阅读