1.4.22. Триггеры, их назначение, создание и использование.
Триггер БД – это хранимый именованный блок, который связан с соответствующей таблицей или представлением. Триггеры БД хранятся только на сервере, выполняются автоматически, сели срабатывают события на команды Insert, Update, Delete.
В триггерах БД можно:
1) Реализовывать сложные виды ограничений целостности, если их нельзя наложить на уровне таблицы.
2) Используются когда необходимо автоматически оповестить другие процедуры о том, что произошли или могут произойти изменения информации в БД.
3) Используются когда необходимо выполнять слежение за данными в таблице.
Структура триггера БД.
1. Триггер можно создавать в PL/SQL (в Procedure Builder, в пункте меню->программы->редактор триггеров БД; в открытом окне указать владельца или схему таблиц, имя таблицы, задать имя триггера, указать когда должен сработать триггер, на какой оператор и на какие конкретно столбцы таблицы он должен сработать, пишется само тело триггера).
2. Триггер можно создавать в SQL Plus. Синтаксис:
Create or replace trigger имя_триггера
{before | after | instead of}
{delete | insert | update [of столбец1, столбец2, …]}
On имя_таблицы | представления
[referencing {old as имя_старой_строки
newas имя_новой_строки}]
[for each {row | statement}]
[where условие]
Begin
Тело триггера;
End;
/
*Instead of – указывается только в том случае, если триггер создается на представление.
В триггере можно использовать логические функции Deleting, Updating, Inserting. Эти функции используются в теле триггера в операторах условия и дают значение «истина», если триггер был запущен с соответствующей операцией. Триггер можно запускать, запуск осуществляется по команде @имя_триггера. Корректировать текст триггера можно вручную в файле, либо введя в SQL Plus: Edit имя_триггера. После корректировки надо снова запустить триггер (он перекомпилируется). Триггер можно включать или выключать:
SQL> Alter trigger имя_триггераdisable | enable;
Триггер можно удалять:
SQL> Drop trigger имя_триггера;
В триггере можно использовать команду для вывода сообщений на экран:
Dbms_output.put_line (‘текст’);
SQL> Set serveroutput on; - такую команду нужно 1 раз прописать в SQL Plus, чтобы работала команда вывода на экран.
Пример: триггер проверяет значение номеров телефонов при каждой вставке или обновлении.
Create or Replace trigger trigger_insert_update
before insert or update
on client
referencing old as old_row
new as new_row
for each row
begin
if (new_row.phone > 4999999999)
then dbms_output.put_line(‘клиент не Московского региона’);
end if;
end;
/
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.