sql >> Databáze >  >> RDS >> PostgreSQL

Jak získat text SQL ze spouštěče události Postgres

Počínaje PostgreSQL 9.5 funkce pg_event_trigger_ddl_commands() je k dispozici pro ddl_command_end spouštěče událostí. Pomocí TAG filtr, lze jej použít pro zpracování libovolné ALTERed tabulky. object_identity (nebo objid ) lze použít k vyřešení původního problému, kterým je zjištění, která tabulka byla ZMĚNĚNA. Pokud jde o získání úplného příkazu, je také k dispozici, ale je interního typu 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;

výstupy:NOTICE: caught ALTER TABLE event on public.t




  1. SQL Fuzzy Matching

  2. Instalace 32bitového klienta Oracle na Windows Server Již běží 64bitový databázový server Oracle

  3. SQL Server Změna modelu obnovy

  4. Škálovatelné procesory Intel Xeon a SQL Server 2017