Триггер DML активизируется операцией INSERT (ввод), UPDATE (обновление) или DELETE (удаление), выполняемой над таблицей базы данных. Триггеры могут активизироваться до (BEFORE) или после (AFTER) операции и действовать на уровне строки или оператора. Тип триггера определяется комбинацией этих факторов. Существует 12 возможных видов: 3 оператора х 2 момента времени х 2 уровня. Ниже приведены примеры правильных триггеров
До выполнения операции обновления на операторном уровне
После выполнения операции ввода на уровне строк
До выполнения операции удаления на уровне строк
Возможные варианты триггеров представлены в таблице ПЛ. Кроме того, триггер может активизироваться несколькими типами операторов
DML, выполняемых над конкретной таблицей: например, INSERT и UPDATE. Код триггера выполняется вместе с активизирующим оператором как часть одной транзакции.
Для таблицы можно создать любое число триггеров каждого вида, в том числе несколько триггеров определенного DML-типа. Например, можно описать два операторных триггера AFTER DELETE. Триггеры
одного и того же типа будут срабатывать по очереди. (Порядок активизации триггеров описывается в следующем разделе.)
Внимание
До PL/SQL 2.1 (Oracle редакции 7.1) для таблицы можно было создать максимум 12 триггеров — по одному каждого вида. Поэтому инициализационный параметр COMPATIBLE должен быть установлен в значение 7.1 или выше, чтобы можно было использовать для таблицы повторяющиеся триггеры одного типа.
В активизирующем событии триггера DML указывается имя таблицы (и столбца), для которой должен срабатывать триггер. В Огас1е8г и выше триггер может активизироваться еще и для столбца вложенной таблицы (см. главу 8).
< Предыдущая | Следующая > |
---|