Базы данных и знаний. Проектирование баз данных по технологии "клиент-сервер" и разработка клиентских приложений. Токмаков Г.П. - 55 стр.

UptoLike

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

- 55-
%ForEachAtt (%TableName)
{ . . . }
Согласно данной конструкции, все, что находится в {...}, будет выпол-
няться для каждого атрибута таблицы %TableName. Макрос %TableName при
раскрытии шаблона разворачивается в имя текущей таблицы.
Условный макрос
%if (% == (%AttProp(generate_id), yes))
{ ... }
является аналогом условного оператора if. Здесь проверяется равенство свой-
ства generate_id у атрибута значения «yes», и ес ли оно равно, то выполняет-
ся все, что находится в фигурных скобках.
В шаблоне ис пользуетс я также макроопределение имени поля -
%AttFieldName_gen, разворачивающееся в имя поля, соответствующее атри-
буту. Например, атрибуту «kod_group» соответствует поле «kod_group_gen».
В текс те шаблона используется также макрос %DBMSTriggerDelim, кото-
рый заменяется при обработке шаблона в разделитель триггера - «! . Это
значение было определено в диалоге «Target Server» в поле «Trigger
Delimiter».
Теперь можно проверить р езульта ты проведенной работы. Для этого вый-
дите из редактора табл иц «Interbase Table Editor» и выполните генерацию
схемы базы данных. В режиме просмотра можно убедиться, что после SQL - за-
просов создания табл иц CREAT E T ABLE появились строки создания генераторов
и триггеров. Например, часть сценария, относящаяся к таблице GROUPS, выгля-
дит теперь следующим образом:
CREATE TABLE GROUPS (
kod_group t_nomer NOT NULL,
kol_students t_kolichestvo,
name_group t_nomer,
sredniy_ball t_sredniy_ball
) ;
CREATE UNIQUE INDEX XPKGROUPS ON GROUPS
(
kod_group
);
ALTER TABLE GROUPS
ADD PRIMARY KEY (kod_group);
CREATE GENERATOR kod_group_gen;
SET TERM !!;
CREATE TRIGGER GROUPS_GEN_ID FOR GROUPS BEFORE INSERT AS
BEGIN
new.kod_group = gen_id(kod_group_gen, 1);
END ! !
SET TERM ; !!