sql >> Database >  >> RDS >> PostgreSQL

Hoe krijg ik SQL-tekst van Postgres-gebeurtenistrigger

Vanaf PostgreSQL 9.5, functie pg_event_trigger_ddl_commands() is beschikbaar voor ddl_command_end gebeurtenis triggers. De TAG gebruiken filter, kan het worden gebruikt voor het verwerken van elke gewijzigde tabel. object_identity (of objid ) kan worden gebruikt om het oorspronkelijke probleem op te lossen om te weten welke tabel is GEWIJZIGD. Wat betreft het verkrijgen van het volledige commando, het is ook beschikbaar, maar het is van een intern type 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;

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




  1. Een database verbinden met een Amazon VPC

  2. Problemen met ORA-02049 oplossen en problemen in het algemeen vergrendelen met Oracle

  3. Kan geen verbinding maken met databaseserver (mysql workbench)

  4. Wat betekent het om een ​​Microsoft Access-database te splitsen?