DeepEdit!

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

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

Удаление и запрещение триггеров

Триггеры, как и процедуры и модули, можно удалять. Синтаксис команды удаления триггера таков:
DROP TRIGGER имя_триггера
где имя_триггера — имя удаляемого триггера. При этом триггер удаляется из словаря данных. В операторе создания триггера можно указывать ключевые слова OR REPLACE, как это делается для подпрограмм. В этом случае если триггер существует, то сначала он удаляется.
Однако в отличие от процедур и функций можно, не удаляя триггер, запретить (DISABLE) его использование. Запрещенный триггер находит­ся в словаре данных, но никогда не активизируется. Для запрещения триггера применяется оператор ALTER TRIGGER:
ALTER TRIGGER им.я_ триггера {DISABLE | ENABLE};
При создании триггера его использование разрешено (ENABLE) по умолчанию. С помощью оператора ALTER TRIGGER можно запретить, а затем повторно разрешить любой триггер. Ниже приведен пример запре­щения и повторного разрешения триггера UodateMaiorStats:
Кроме того, при помощи команды ALTER TABLE можно разрешить или запретить использование всех триггеров определенной таблицы, если
добавить конструкцию ENABLE ALL TRIGGERS (разрешить все триггеры)
или DISABLE ALL TRIGGERS (запретить все триггеры). Например:
В столбце status представления user_triggers находится либо 'ENABLED', либо 'DISABLED', и это значение показывает, каково текущее состояние триггера. Запрещение триггера не удаляет его из словаря дан­ных, как это происходит при выполнении команды DROP.
Р-код триггера
Если модуль или подпрограмма хранится в словаре данных, в дополнение к исходному программному тексту объекта хранится еще и его скомпили­рованный р- код. Это справедливо и для триггеров, т.е. их можно вызы­вать без перекомпиляции. Вместе с триггерами хранится информация об установленных для них зависимостях, в результате чего триггеры могут автоматически становиться недостоверными точно так же, как модули и подпрограммы. Если триггер становится недостоверным, он перекомпи­лируется при следующей его активизации.
 









jAntivirus