Триггеры
Триггеры являются откомпилированным кодом, хранимым в базе данных, который исполняется сервером при возникновении определенных событий (вставка, удаление и пр.) для таблиц.
Приведенный ниже запрос позволяет выбрать триггеры, определенные пользователем и не являющиеся базой для CHECK ограничений.
SELECT RDB$TRIGGERS.RDB$TRIGGER_NAME, RDB$TRIGGERS.RDB$SYSTEM_FLAG FROM RDB$TRIGGERS WHERE ( (RDB$TRIGGERS.RDB$SYSTEM_FLAG <> 1) and (RDB$TRIGGERS.RDB$TRIGGER_NAME not in (SELECT RDB$TRIGGER_NAME FROM RDB$CHECK_CONSTRAINTS)) );
Следующий запрос аналогичен предыдущему, но он выдает более полную информацию о триггере: имя триггера, таблица, для которой этот триггер определен, порядковый номер триггера при выполнении, тип триггера, его исходный текст и описание, данное пользователем, а также признак активности.
SELECT RDB$TRIGGERS.RDB$TRIGGER_NAME, RDB$TRIGGERS.RDB$RELATION_NAME, RDB$TRIGGERS.RDB$TRIGGER_SEQUENCE, RDB$TRIGGERS.RDB$TRIGGER_TYPE, RDB$TRIGGERS.RDB$TRIGGER_SOURCE, RDB$TRIGGERS.RDB$DESCRIPTION, RDB$TRIGGERS.RDB$TRIGGER_INACTIVE FROM RDB$TRIGGERS WHERE ( (RDB$TRIGGERS.RDB$SYSTEM_FLAG <> 1) and (RDB$TRIGGERS.RDB$TRIGGER_NAME not in (SELECT RDB$TRIGGER_NAME FROM RDB$CHECK_CONSTRAINTS)) );
Используя информацию о типах из таблицы RDB$TYPES, получаем расшифровку типов триггеров.
SELECT RDB$TRIGGERS.RDB$TRIGGER_NAME, RDB$TRIGGERS.RDB$RELATION_NAME, RDB$TRIGGERS.RDB$TRIGGER_SEQUENCE, RDB$TRIGGERS.RDB$TRIGGER_TYPE, RDB$TYPES.RDB$TYPE_NAME, RDB$TRIGGERS.RDB$TRIGGER_SOURCE, RDB$TRIGGERS.RDB$DESCRIPTION, RDB$TRIGGERS.RDB$TRIGGER_INACTIVE FROM RDB$TRIGGERS INNER JOIN RDB$TYPES ON (RDB$TRIGGERS.RDB$TRIGGER_TYPE = RDB$TYPES.RDB$TYPE) WHERE ((RDB$TRIGGERS.RDB$SYSTEM_FLAG <> 1) and (RDB$TRIGGERS.RDB$TRIGGER_NAME not in (SELECT RDB$TRIGGER_NAME FROM RDB$CHECK_CONSTRAINTS)) and (RDB$TYPES.RDB$FIELD_NAME = 'RDB$TRIGGER_TYPE') ) ORDER BY RDB$TRIGGERS.RDB$RELATION_NAME, RDB$TRIGGERS.RDB$TRIGGER_SEQUENCE;