PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

pilih pernyataan dalam fungsi postgres yang dipanggil di dalam pemicu

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memberi nama setiap baris dalam tabel dengan string 2 kata acak

  2. Pembaruan singa menghapus pengguna 'postgres'. Bagaimana cara mengembalikannya?

  3. Cara memetakan Enum PostgreSQL dengan JPA dan Hibernate

  4. Array kueri untuk loop `untuk menunggu` untuk pembantu transaksi postgresql

  5. Kunci baris database selama beberapa transaksi