FirebirdSQL logo

DDL триггеры

DDL триггеры срабатывают на указанные события изменения метаданных в одной из фаз события.BEFORE триггеры запускаются до изменений в системных таблицах.AFTER триггеры запускаются после изменений в системных таблицах.

Переменные доступные в пространстве имён DDL_TRIGGER

Во время работы DDL триггера доступно пространство имён DDL_TRIGGER для использования в функции RDB$GET_CONTEXT.Его использование также допустимо в хранимых процедурах и функциях, вызванных DDL триггерами.

Контекст DDL_TRIGGER работает как стек.Перед возбуждением DDL триггера, значения, относящиеся к выполняемой команде, помещаются в этот стек.После завершения работы триггера значения выталкиваются.Таким образом, в случае каскадных DDL операторов, когда каждая пользовательская DDL команда возбуждает DDL триггер, и этот триггер запускает другие DDL команды, с помощью EXECUTE STATEMENT, значения переменных в пространстве имен DDL_TRIGGER будут соответствовать команде, которая вызвала последний DDL триггер в стеке вызовов.

Переменные доступные в пространстве имён DDL_TRIGGER:* EVENT_TYPE — тип события (CREATE, ALTER, DROP)
  • OBJECT_TYPE — тип объекта (TABLE, VIEW и д.р.)

  • DDL_EVENT — имя события (<ddl event item>),

    где <ddl event item> = EVENT_TYPE || ' ' || OBJECT_TYPE

  • OBJECT_NAME — имя объекта метаданных

  • SQL_TEXT — текст SQL запроса