Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с Oracle / Триггеры в PL SQL.ppt
Скачиваний:
8
Добавлен:
28.06.2021
Размер:
905.73 Кб
Скачать

Проверка работы триггеров

Изменение триггеров (1)

Для измения триггера используйте инструмент Edit SQL Developer или оператор DDL CREATE OR REPLACE TRIGGER.

Чтобы изменить триггер с помощью инструмента Edit:

nНа вкладке Connections разверните bookshop-XE. Под значком появится список типов объектов схемы.

nРазверните Triggers. Появится список триггеров.

nЩелкните триггер, чтобы изменить его. Справа от панели Connections появляется окно с именем изменя- емого триггера.

Изменение триггеров (2)

4.Нажмите на вкладку Code. Откроется панель с кодом созданного триггера. Панель Code находится в режиме записи (нажатие на значок карандаша переключает в режим только для чтения и наоборот).

5.Измените код.

6.Заголовок панели дан курсивом. Это указывает на то, что изменения не были сохранены в базе данных.

7.Выберите Сохранить в меню Файл.

8.Oracle Database XE компилирует триггер и сохраняет его (название панели больше не курсивом).

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

Можно временно отключить триггеры (если они ссылаются на недоступные объекты, или необходимо загрузить боль- шой объем данных без задержки). После этого можно снова включить триггеры.

Чтобы отключить или включить один триггер:

ALTER TRIGGER trigger_name DISABLE ; ALTER TRIGGER trigger_name ENABLE;

Чтобы отключить или включить все триггеры на таблице:

ALTER TABLE table_name DISABLE ALL TRIGGERS; ALTER TABLE table_name ENABLE ALL TRIGGERS;

О компиляции и зависимостях триггеров (1)

Запуск оператора CREATE TRIGGER компилирует соз- данный триггер. Если компиляция вызывает ошибку, выполнить оператор не удастся. Чтобы увидеть ошибки компиляции, выполните оператор:

SELECT * FROM USER_ERRORS WHERE TYPE = 'TRIGGER';

Чтобы увидеть объекты схемы, от которых зависят триггеры, выполните оператор:

SELECT * FROM ALL_DEPENDENCIES

WHERE TYPE = 'TRIGGER';

О компиляции и зависимостях триггеров (2)

О компиляции и зависимостях триггеров (3)

Если объект, от которого зависит триггер удален или из- менен так, что имеется несоответствие между триггером и объектом, то триггер недействителен.

В следующий раз, когда триггер будет вызван, он будет перекомпилирован. \

Чтобы немедленно перекомпилировать триггер, запустите оператор:

ALTER TRIGGER trigger_name COMPILE;

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

Прежде чем удалять объекты, от которых зависит триггер, необходимо удалить триггер (с помощью SQL Developer или оператора DDL DROP TRIGGER):

nНа вкладке Connections разверните bookshop-XE. Под значком появится список типов объектов схемы.

nРазверните Triggers. Появится список триггеров.

nЩелкните ПКМ имя удаляемого триггера. Появится список выбора.

nНажмите Drop Trigger. Откроется окно удаления. nНажмите Apply. Откроется окно подтверждения. nНажмите ОК.

Модификация триггеров

Для триггеров (как и для представлений) не существует команды модификации. Старый триггер заменяется новым с помощью команды CREATE OR REPLACE TRIGGER.

Триггер можно удалить, выдав команду :

DROP TRIGGER имя_триггера;

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

ALTER TRIGGER имя_триггера DISABLE ;

ALTER TRIGGER имя_триггера ENABLE ;

Тонкости, касающиеся триггеров (1)

Триггер, в котором выполняются операторы DML, может вызывать срабатывание других триггеров. В результате количество сработавших триггеров может оказаться довольно большим.

В теле триггера нельзя использовать операторы

ROLLBACK, COMMIT и SAVEPOINT.

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

Если для одного триггерного события определено более одного триггера, порядок их срабатывания не определен.