Sesuatu seperti ini?
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;
Juga dari komentar:
Anda salah paham. Pengembalian dan pemberitahuan adalah dua hal yang berbeda.
Pertama-tama mari kita berurusan dengan pengembalian. Untuk pemicu AFTER INSERT nilai yang dikembalikan sama sekali diabaikan :
Nilai kembalian hanya penting untuk pemicu SEBELUM. Dalam hal ini Anda dapat memodifikasi (atau bahkan mencegah) baris sebelum menulis ke tabel. Lihat ini:https://www.postgresql.org/docs/9.2/ plpgsql-trigger.html Ini tidak ada hubungannya dengan notifikasi.
Lalu bagaimana dengan notifikasi? Apa pun yang Anda terima dari notifikasi adalah apa yang Anda berikan sebagai argumen kedua ke pg_notify
. Semua itu didokumentasikan dengan cukup baik:https://www.postgresql.org /docs/9.0/sql-notify.html