Базы данных Oracle - статьи

         

Пример редакций триггерных процедур


Теперь для добавления в БД данных о сотрудниках создадим две редакцмм триггерных процедур. Это делается аналогично обычным процедурам. Прикладной смысл триггерных процедур в данном случае состоит в нормализации имен сотрудников перед помещением в базу. CONNECT yard/pass ALTER SESSION SET EDITION = ora$base;

CREATE OR REPLACE TRIGGER empl_insert BEFORE INSERT ON emp_view

FOR EACH ROW BEGIN :new.ename := INITCAP ( :new.ename ); END; / GRANT INSERT ON emp_view TO scott;

Обратите внимание, что для редактируемых представлений (EDITIONING VIEW) в триггерных процедурах не действует привязка к событию INSTEAD OF, как для обычных представлений, а вместо этого BEFORE и AFTER, как для основных таблиц. Это одно из проявлений особости редактируемых представлений от обычных.

Вторая редакция: ALTER SESSION SET EDITION = app_release_1;

CREATE OR REPLACE TRIGGER empl_insert BEFORE INSERT ON emp_view

FOR EACH ROW BEGIN :new.ename := LOWER ( :new.ename ); END; / GRANT INSERT ON emp_view TO scott;

Проверку можно выполнить следующей последовательностию команд в SQL*Plus: CONNECT scott/tiger ALTER SESSION SET EDITION = ora$base;

INSERT INTO yard.emp_view VALUES ( 1111, 'OBAMA', 10 ); SELECT * FROM yard.emp_view WHERE empno = 1111; ROLLBACK;

ALTER SESSION SET EDITION = app_release_1;

INSERT INTO yard.emp_view VALUES ( 1111, 'OBAMA' ); SELECT * FROM yard.emp_view WHERE empno = 1111; ROLLBACK;



Содержание раздела