Пространство имён 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
– имя объекта метаданных -
OLD_OBJECT_NAME
– имя объекта метаданных до переименования -
NEW_OBJECT_NAME
– имя объекта метаданных после переименования -
SQL_TEXT
– текст SQL запроса