Ограничения на создание триггеров



Лишь один триггер каждого типа может существовать на таблицу. Это позволяет иметь для таблицы двенадцать возможных триггеров.

Тело триггера может содержать любые предложения DML, включая предложения SELECT (только SELECT ... INTO или предложения SELECT в определениях курсоров), INSERT, UPDATE и DELETE; в теле триггера не допускаются предложения DDL.

Изменение триггеров

Нельзя явно изменить триггер; его необходимо заменить новым определением триггера. Заменяя триггер, вы должны включить в предложение CREATE TRIGGER опцию OR REPLACE. Опция OR REPLACE позволяет заменить существующий триггер новой версией, не затрагивая никаких грантов, которые были выданы для первоначальной версии этого триггера. Для удаления триггера из базы данных используйте команду DROP TRIGGER.

Включение и выключение триггеров

Триггер может находиться в одном из двух различных режимов:

включен Включенный триггер выполняет свое тело, если выдано предложение триггера, и ограничение триггера (если есть) вычисляется как TRUE.

выключен Выключенный триггер не выполняет свое тело, даже если выдано предложение триггера, и ограничение триггера (если есть) вычисляется как TRUE.

Ограничения целостности и триггеры

Для ограничения данных при вводе могут использоваться как триггеры, так и декларативные ограничения целостности. Однако триггеры и ограничения целостности имеют существенные различия.

Триггеры налагают ограничения на то, что могут делать транзакции. Триггер не применяется к данным, которые были загружены до того, как триггер был определен; поэтому триггер не гарантирует, что все данные в таблице удовлетворяют правилам, установленным ассоциированным триггером.

Управление зависимостями между объектами схемы

Вопросы зависимостей

Когда вы создаете хранимую процедуру или пакет, ORACLE проверяет, что операции, которые выполняет эта процедура или пакет, возможны с точки зрения доступа к адресуемым объектам. Например, если хранимая процедура содержит предложение SELECT, выбирающее столбцы из таблицы, то ORACLE проверяет, что эта таблица существует и содержит указанные столбцы. Если таблица впоследствии переопределяется так, что один из ее столбцов перестает существовать, то хранимая процедура может перестать правильно работать. По этой причине хранимая процедура называется ЗАВИСИМОЙ от данной таблицы.

Устранение перекомпиляции во время выполнения

Чтобы избежать перекомпиляций времени выполнения, соблюдайте следующие правила:

Не переопределяйте объектов схемы . перекомпилировать хранимые процедуры и функции, зависящие от этих объектов.

Переопределив объект схемы, вручную перекомпилируйте все зависимые процедуры, функции и пакеты.

СТАРАЙТЕСЬ ИСПОЛЬЗОВАТЬ ПАКЕТЫ. Пакеты дают наиболее эффективный метод предотвращения излишних проверок зависимостей. 

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

ORACLE динамически (автоматически) перекомпилирует недействительный обзор или программную единицу PL/SQL при очередном обращении. Альтернативно, вы можете заставить ORACLE перекомпилировать обзор иди программную единицу, используя подходящую команду SQL с параметром COMPILE.

Принудительная (форсированная) перекомпиляция чаще всего используется для того, чтобы проверить на ошибки, когда известно, что зависимый объект недействителен, но он временно не используется; в таком случае для автоматической перекомпиляции пришлось бы дожидаться очередного обращения к объекту.

Ручная перекомпиляция процедур и функций

Чтобы перекомпилировать независимую процедуру или функцию, используйте команду ALTER PROCEDURE/FUNCTION с параметром COMPILE.

Ручная перекомпиляция триггеров

Чтобы перекомпилировать существующий триггер, независимо от того, включен от или выключен, используйте команду ALTER TRIGGER с параметром COMPILE. Например, следующее предложение форсирует компиляцию триггера с именем REORDER:

ALTER TRIGGER reorder COMPILE;


Дата добавления: 2018-02-15; просмотров: 561; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!