Шрифт:
on CUSTOMER
REFERENCING OLD AS old1 NEW AS new1
for each row
/* ERwin Builtin Tue Jan 26 21:24:371999 7
/* default body for SecurWrite 7
begin
Insert into Security (OldName.NewName, UserUpdate, UpdateDate)
values (:old1.CustomerName,:new1.CustomerName, User, Sysdate);
end;
/
Ниже приведен текст SQL-команд и результат их выполнения (выполнены при помощи Oracle SQVPlus), иллюстрирующих работу триггера.
SQL> insert into CUSTOMER (CustomerlD, CustomerName) values (20/lvanov');
1 row created.
SQL> update CUSTOMER set CuslomerName='Petrov' where CustomerlD=20;
1 row updated.
SQL> select* from SECURITY;
UPDATEDATE OLDNAME NEWNAME USERUPDATE
–––––––––––––––––––––––––––––––––––––––––––––––––––––––
27-JAN-99 Ivanov Petrov SCOTT
Любое изменение имени клиента в таблице CUSTOMER фиксируется в таблице SECURITY, причем регистрируется прежнее значение имени, новое значение, дата изменения и имя пользователя, производившего изменения.
Кнопка Toolbox диалога Table Trigger Editor вызывает редактор ERwin Trigger Toolbox, который значительно облегчает создание текста шаблона триггера (рис. 2.81).
Рис. 2.81. Диалог ERwin Template Toolbox
Template Toolbox содержит три секции: слева расположены списки, содержащие макросы для таблиц, связей, колонок, ограничений и макросы общего назначения. Все макросы начинаются с символа %. Список макросов приведен в приложении. Если выделить макрос в каком-либо списке, в окне Description отобразится синтаксис макроса и пример его использования для связи между таблицами, показанными в правой секции редактора. Таблицы и связи, показываемые в правой части редактора, взяты из примера, содержащегося в файле MOVIES. ER1, который находится в директории Models.
Для включения макроса в текст шаблона достаточно дважды щелкнуть левой клавишей мыши по соответствующему макросу в одном из списков. Макрос включается в текст шаблона в окне Template Code диалога Table Trigger Editor.
Для изменения шаблона триггера ссылочной целостности (переопределение типа ссылочной целостности) служит редактор Trigger Template Editor (рис. 2.82).
Рис. 2.82. Диалог Trigger Template Editor
Для изменения шаблона нужно выделить тип триггера в списке, который находится в верхней части редактора, после чего щелкнуть по кнопке Detach ->, чтобы отсоединить тот шаблон, который связан с выбранным триггером. В списке Built-in Template или User Override нужно выбрать шаблон, который следует связать с выбранным триггером. Выделив имя шаблона, нужно щелкнуть по кнопке Attach над списком. ERwin свяжет выбранный шаблон с триггером и покажет его текст в окне Template Code. Для отмены связывания следует щелкнуть по кнопке <- Rebind. Для создания нового собственного шаблона надо задать его имя в окне Template Name и с помощью Trigger Toolbox (кнопка Trigger Toolbox”) создать текст шаблона триггера. Кнопка Add добавит новый шаблон в список User Override.
Для переопределения шаблона триггера для связи следует правой кнопкой мыши щелкнуть по связи и во всплывающем меню выбрать пункт Relationship Template Editor. Появляется диалог Relationship Template Editor (рис. 2.83). Создание шаблона триггера и связывание его с определенным правилом ссылочной целостности аналогично созданию и связыванию шаблона в диалоге Trigger Template Editor.
Рис. 2.83. Диалог Relationship Template Editor
Для создания и редактирования хранимых процедур ERwin располагает специальными редакторами, аналогичными редакторам, используемым для создания триггеров. В отличие от триггера хранимая процедура не выполняется в ответ на какое-то событие, а вызывается из другой программы, которая передает на сервер имя процедуры. Хранимая процедура более Гибка, чем триггер, поскольку может вызывать другие хранимые процедуры. Ей можно передавать параметры, и она может возвращать параметры, значения и сообщения.
ERwin не имеет встроенных шаблонов хранимых процедур, которые можно было бы использовать как основу при создании новой хранимой процедуры. Для создания или редактирования хранимой процедуры следует щелкнуть правой кнопкой мыши по таблице и выбрать в каскадном меню пункт Table Editor/Stored Procedure. Появляется закладка Stored Procedure диалога Table Editor (рис. 2.84).
Рис. 2.84. Закладка Stored Procedure диалога Table Editor
Список Attached SP Template содержит имена процедур, связанных с редактируемой таблицей. Список Unattached SP Template содержит имена процедур, которые могут быть связаны с таблицей. Кнопки <-Attach и Detach-> служат для связывания и открепления процедуры от таблицы.
Кнопка SP Template вызывает диалог, в котором можно просмотреть и отредактировать код процедуры, включающий SQL-команды и макросы ERwin, Код процедуры показывается в окне SP Expansion, код шаблона - в окне SP Template. На рис. 2.84 в окне SP Template показан код шаблона процедуры с одним возвращаемым параметром, содержащим количество строк текущей таблицы (синтаксис Oracle 7.2).
В окне SP Template можно непосредственно вводить выражения SQL (при условии соблюдения синтаксиса выбранной СУБД). В редакторе SP Template для внесения в текст шаблона макросов можно воспользоваться редактором ERwin Template Toolbox.