PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да получите SQL текст от задействане на събитие на Postgres

Започвайки от PostgreSQL 9.5, функция pg_event_trigger_ddl_commands() е наличен за ddl_command_end тригери за събития. Използване на TAG филтър, може да се използва за обработка на всяка ALTERed таблица. object_identity (или objid ) може да се използва за решаване на първоначалния проблем да се знае коя таблица е променена. Що се отнася до получаването на пълната команда, тя също е налична, но е от вътрешен тип 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;

изходи: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. Как да показвате нулеви стойности при изпълнение на заявки в psql (PostgreSQL)

  2. Вземете името на собственика на DB в PostgreSql

  3. запазване на обект на python в таблица на postgres с туршия

  4. Как да превключвам бази данни в postgres?

  5. INSERT a SELECT GROUP BY :повече целеви колони, отколкото изрази грешка