Ответ 1
Я знаю, это старый вопрос, но теперь он был реализован в версии 9.3 или, по крайней мере, частично http://www.postgresql.org/docs/9.3/static/event-trigger-definition.html
Я хотел бы знать, можно ли запускать триггер в системной таблице PostgreSQL при создании таблицы
Мне нужно добавить 2 функции в каждую таблицу моей базы данных, и я хотел бы сделать это динамически
Спасибо
Я знаю, это старый вопрос, но теперь он был реализован в версии 9.3 или, по крайней мере, частично http://www.postgresql.org/docs/9.3/static/event-trigger-definition.html
Это можно сделать с помощью триггера события:
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 функции в каждую таблицу", поскольку функции не принадлежат определенной таблице, но если вам нужно выполнить операцию, специфичную для новых таблиц, это может быть не для вас.
Вы ищете "Триггеры DDL". Они не реализованы в PostgreSQL. Также вы не можете добавлять триггеры в системные таблицы. Посмотрите на эту запись на форуме: