DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Тело триггера

Ранее телом триггера мог быть только блок PL/SQL. Теперь тело триггера может содержать оператор GALL. Вызываемая процедура может быть хранимой подпрограммой PL/ SQL либо оболочкой подпрог­раммы С или Java. Это позволяет создавать триггеры, функциональные конструкции которых написаны на Java. Предположим, что необходимо регистрировать моменты соединения с базой данных и отключения
от нее в следующей таблице:

Внимание
Триггеры LogConnects и LogDisconnects являются системными триггерами базы данных (а не схемы), поэтому для их создания необходимо иметь системную привилегию ADMINISTER DATABASE TRIGGER.
Тела триггеров LogConnects и LogDisconnects — это операторы CALL, вызывающие процедуру для исполнения. Текущий пользователь переда­ется как единственный аргумент. В рассмотренном примере вызывается стандартная модульная процедура PL/SQL, но точно так же можно было бы вызвать оболочку внешней подпрограммы С или Java. Предположим, что в базу данных загружается следующий класс Java:

Внимание
Триггерные предикаты INSERTING, UPDATING и DELETING, а также идентификаторы корреляции  :old и : new (и : parent) можно использовать только тогда, когда тело триггера является полноценным блоком PL/SQL, но не оператором CALL
 









jAntivirus