pg_notify с подмножеством строки

#postgresql #triggers

#postgresql #триггеры

Вопрос:

Привет, я пытаюсь понять, как вернуть подмножество новой строки в виде 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$;
 

который отлично работает, возвращая всю строку данных, когда срабатывает триггер after insert для штрафов таблицы, однако то, что я пытаюсь сделать, это вернуть только подмножество NEW, а не все целиком. Было бы действительно здорово, если бы я мог вернуть результат выбора при создании или что-то подобное. Возможно ли это или мое принимающее приложение должно вместо этого сортировать данные?

Чтобы было ясно, я хочу вернуть json с помощью say

NEW.c1, NEW.c2, NEW.c5, а не вся строка из примерно 50 значений.

Ta.

Ответ №1:

Вы можете определить проекцию, которую вы хотите, из НОВОЙ записи:

  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$
;