Ранее телом триггера мог быть только блок 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
< Предыдущая | Следующая > |
---|