Algo assim?
CREATE FUNCTION notif()
RETURNS TRIGGER AS $$
DECLARE
data JSONB;
result JSONB;
BEGIN
SELECT json_agg(tmp) -- requires Postgres9.3+
INTO data
FROM (
-- your subquery goes here, for example:
SELECT followers.following_user_id
FROM followers
WHERE followers.followed_user_id = NEW.user_id
) tmp;
result := json_build_object('data', data, 'row', row_to_json(NEW));
PERFORM pg_notify('event', result::TEXT);
RETURN NEW;
END;
$$ language plpgsql;
Também dos comentários:
Você entende mal as coisas. Retorno e notificação são duas coisas diferentes.
Primeiro de tudo vamos lidar com o retorno. Para gatilhos AFTER INSERT o valor de retorno é totalmente ignorado :
O valor de retorno só importa para gatilhos BEFORE. Nesse caso, você pode modificar (ou até impedir) a linha antes de gravar na tabela. Veja isto:https://www.postgresql.org/docs/9.2/ plpgsql-trigger.html Isso não tem nada a ver com notificações.
Então e as notificações? O que você recebe de uma notificação é o que você passa como segundo argumento para
pg_notify
. Tudo isso está bem documentado:https://www.postgresql.org /docs/9.0/sql-notify.html