Я собираюсь внедрить систему аудита в своей базе данных, и я ищу наиболее эффективный способ сделать это.PostgreSql Событие триггера для аудита
Я читал wiki и проводил исследования.
Существует этот пример: https://wiki.postgresql.org/wiki/Audit_trigger А также это: https://wiki.postgresql.org/wiki/Audit_trigger_91plus
В перечисленных примерах вы должны создать триггер для каждой таблицы (своего рода redudant).
Однако с Postgres 9.3+ у нас есть возможность запуска событий, где мы можем реагировать на специальные события, такие как создание, изменение или удаление таблицы.
Оптимальное решение было бы:
create event trigger UpdateTables
on ddl_command_end
when tag in ('insert ', 'update ')
execute procedure DoAudit();
Однако, возвращающий:
ERROR: filter value "insert " not recognized for filter variable "tag" SQL Status:42601
мне интересно, если мы можем реагировать на вставке, обновления событий с триггерами событий и использованием этот единственный триггер для всех аудитов?
Вам действительно нужно создать триггер для каждой таблицы, но все триггеры могут (повторно) использовать один и тот же триггер _function_. –