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