Подтвердить что ты не робот

Выполнить триггер при создании таблицы

Я хотел бы знать, можно ли запускать триггер в системной таблице PostgreSQL при создании таблицы

Мне нужно добавить 2 функции в каждую таблицу моей базы данных, и я хотел бы сделать это динамически

Спасибо

4b9b3361

Ответ 2

Это можно сделать с помощью триггера события:

CREATE OR REPLACE FUNCTION on_create_table_func()
RETURNS event_trigger AS $$
BEGIN
    -- your code here
END
$$
LANGUAGE plpgsql;

CREATE EVENT TRIGGER
on_create_table ON ddl_command_end
WHEN TAG IN ('CREATE TABLE')
EXECUTE PROCEDURE on_create_table_func();

Обратите внимание, что нет способа напрямую выполнить какой-либо запрос к вновь созданной таблице или даже получить ее имя. Я не знаю, что вы имеете в виду под "добавить 2 функции в каждую таблицу", поскольку функции не принадлежат определенной таблице, но если вам нужно выполнить операцию, специфичную для новых таблиц, это может быть не для вас.

Ответ 3

Вы ищете "Триггеры DDL". Они не реализованы в PostgreSQL. Также вы не можете добавлять триггеры в системные таблицы. Посмотрите на эту запись на форуме:

Добавление триггера аудита ddl