Zoiets?
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;
Ook uit opmerkingen:
Je begrijpt dingen verkeerd. Retourneren en melding zijn twee verschillende dingen.
Laten we eerst de terugkeer regelen. Voor AFTER INSERT-triggers de retourwaarde wordt volledig genegeerd :
De retourwaarde is alleen van belang voor BEFORE-triggers. In dat geval kunt u de rij wijzigen (of zelfs voorkomen) voordat u naar de tabel schrijft. Zie dit:https://www.postgresql.org/docs/9.2/ plpgsql-trigger.html Dit heeft niets te maken met meldingen.
Dus hoe zit het met meldingen? Wat je ook ontvangt van een melding is wat je als tweede argument doorgeeft aan pg_notify
. Dat is allemaal vrij goed gedocumenteerd:https://www.postgresql.org /docs/9.0/sql-notify.html