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

Cara mendapatkan teks SQL dari pemicu acara Postgres

Mulai dari PostgreSQL 9.5, fungsi pg_event_trigger_ddl_commands() tersedia untuk ddl_command_end pemicu peristiwa. Menggunakan TAG filter, ini dapat digunakan untuk memproses tabel yang DIUBAH. object_identity (atau objid ) dapat digunakan untuk memecahkan masalah awal mengetahui tabel mana yang telah DIUBAH. Adapun untuk mendapatkan perintah lengkap, itu juga tersedia, tetapi jenis internal pg_ddl_command .

CREATE TABLE t (n INT);

CREATE FUNCTION notice_event() RETURNS event_trigger AS $$
DECLARE r RECORD;
BEGIN
    FOR r IN SELECT * FROM pg_event_trigger_ddl_commands() LOOP
        RAISE NOTICE 'caught % event on %', r.command_tag, r.object_identity;
    END LOOP;
END;
$$
LANGUAGE plpgsql;

CREATE EVENT TRIGGER tr_notice_alter_table
  ON ddl_command_end WHEN TAG IN ('ALTER TABLE')
  EXECUTE PROCEDURE notice_event();

ALTER TABLE t ADD c CHAR;

keluaran:NOTICE: caught ALTER TABLE event on public.t




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Periksa target statistik di PostgreSQL

  2. Istilah sintaks SQL untuk 'WHERE (col1, col2) <(val1, val2)'

  3. Menghubungkan ke database PostgreSQL melalui tunneling SSH dengan Python

  4. Data baru tidak bertahan ke kolom array Rails di Postgres

  5. Bagaimana cara membuat tabel Postgres dengan kunci utama gabungan yang unik?