Разработка клиент-серверных приложений с использованием технологий Oracle. Семенова И.И. - 74 стр.

UptoLike

Составители: 

73
таблице БД, для реализации "бизнес-правил", для организации каскадных
воздействий на таблицы БД.
Строковые и операторные триггеры
Синтаксис:
CREATE [OR REPLACE] TRIGGER имя_триггера
BEFORE | AFTER активизирующее_событие ON ссылка_на_таблицу
FOR EACH ROW [WHEN условие_срабатывания]
тело_триггера
где
активизирующее_событие указывает момент активации триггера
BEFORE до срабатывания оператора DML, а AFTERпосле срабатыва-
ния оператора
DML.
FOR EACH ROW указывает на активацию триггера от воздействия на
каждую строку в наборе строк, без этого указателя триггер запускается по-
сле или до оператора DML в целом.
Порядок активации триггеров в большинстве случаев таков:
1)
Выполняется операторный триггер BEFORE (при его наличии).
2)
Для каждой строки, на которую воздействует оператор:
- выполняется строковый триггер BEFORE (при его наличии);
- выполняется собственно оператор;
- выполняется строковый триггер AFTER (при его наличии).
3)
Выполняется операторный триггер AFTER (при его наличии).
Псевдозаписи
При создании строковых триггеров можно использовать псевдозаписи
:old и :new. Строковый триггер срабатывает один раз для каждой строки.
При этом внутри триггера можно обращаться к строке, обрабатываемой в
данный момент времени, применяя псевдозаписи.
Например:
CREATE OR REPLACE TRIGGER ADMIN_BOOKS.Trigger1
BEFORE DELETE ON ADMIN_BOOKS.Authors FOR EACH ROW
DECLARE
a ADMIN_BOOKS.Authors.Code_author%TYPE;
b ADMIN_BOOKS.Authors.Name_Author%TYPE;
c ADMIN_BOOKS.Authors.Birthday%TYPE;
BEGIN
a:= :old.Code_author;
b:= :new.Name_Author;
c:= :old.Birthday;