FirebirdSQL logo
 VIEWPROCEDURE 

Пространство имён 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 запроса

Отключение триггеров

В некоторые утилиты командной строки Firebird были добавлены новые ключи для отключения триггеров на базу данных:

gbak -nodbtriggers
isql -nodbtriggers
nbackup -T

Эти ключи могут использоваться только SYSDBA или владельцем базы данных.