Макросы ERwin
Поддержка макросов целевым сервером
В шаблонах, создаваемых для триггеров,
хранимых процедур, pre- (предварительных) и
post-скриптов генерации схем, можно использовать
макросы ERwin в случае, если эти возможности
поддерживаются целевой СУБД.
Все макросы, за исключением тех,
которые особо определены, могут использоваться
для всех целевых серверов, поддерживаемых ERwin.
Поддержка вашим сервером RI (Referential Integrity) -
триггеров, хранимых процедур и/или сценариев -
описана в документации сервера.
Использование справочника по макросам
Справочник макросов организован в
алфавитном порядке по именам макросов.
Информация по каждому макросу включает его
описание, синтаксис, область видимости (например,
операторы или фрагменты кода, где он может
использоваться), возвращаемое значение; и, как
правило, пример текста шаблона макроса (шаблона)
и соответствующий ему "раскрываемый текст"
(рис.1). Рассмотрим каждый элемент:
Синтаксис макроса. Описывает
синтаксис каждого макроса ERwin, включая ключевые
слова, переменные, определяемые пользователем, и
необходимую пунктуацию.
Область видимости. Для каждого макроса
этот элемент перечисляет:
Команды "%ForEach", в которые может быть
вставлен данный макрос.
Возможность видимости макроса как предиката в
условном операторе "%If".
Типы шаблонов, в которые может вставляться
данный макрос. Возможные значения: RI или Rel Override
(переопределение отношений), Trigger Override (Триггер.) и
Global (Глобальный). Отдельные шаблоны каждого типа
перечислены в следующей таблице.
Return Value (Возвращаемое значение).
Поясняет, что (какой SQL-код) возвращает макрос при
генерации.
Example (Пример). Содержит пример
синтаксиса шаблона и соответствующий результат
выполнения. Все примеры с результатом выполнения
основаны на использовании подмножества таблиц в
модели ERwin MOVIE (целевой SQL-сервер), показанной в
наборе инструментов шаблона ERwin. Пример не
приводится, если макрос возвращает значение TRUE
или FALSE.
Примечание: Пример
модели, приведенный выше, показывает физические
имена таблиц и столбцов, обозначенные названиями
с символом подчеркивания (например, MOVIE_COPY,
movie_copy_number). Различные макросы ERwin могут
возвращать либо логическое имя ERwin (которое может
содержать дефисы или пробелы), либо физические
имена баз данных (в которых дефисы или пробелы
заменяются символом подчеркивания), в
зависимости от ваших потребностей.
Область видимости |
Шаблоны |
RI или Переопределение
отношений |
PARENT INSERT RESTRICT
PARENT INSERT CASCADE
PARENT INSERT SET NULL
PARENT INSERT SET DEFAULT
PARENT UPDATE RESTRICT
PARENT UPDATE CASCADE
PARENT UPDATE SET NULL
PARENT UPDATE SET DEFAULT
PARENT DELETE RESTRICT
PARENT DELETE CASCADE
PARENT DELETE SET NULL
PARENT DELETE SET DEFAULT |
CHILD INSERT RESTRICT
CHILD INSERT CASCADE
CHILD INSERT SET NULL
CHILD INSERT SET DEFAULT
CHILD UPDATE RESTRICT
CHILD UPDATE CASCADE
CHILD UPDATE SET NULL
CHILD UPDATE SET DEFAULT
CHILD DELETE RESTRICT
CHILD DELETE CASCADE
CHILD DELETE SET NULL
CHILD DELETE SET DEFAULT |
|
Хранимые
процедуры, присоединенные к таблицам (макросы,
используемые в %ForEachFKAtt); pre- и post-скрипты (макросы,
используемые в %ForEachEntity) |
Trigger Override |
TRIGGER UPDATE HEADER
TRIGGER DELETE HEADER
TRIGGER INSERT HEADER
TRIGGER UPDATE FOOTER
TRIGGER DELETE FOOTER |
TRIGGER INSERT FOOTER
CUSTOM TRIGGER HEADER
CUSTOM TRIGGER FOOTER
CUSTOM TRIGGER DEFAULT BODY |
|
Хранимые
процедуры, присоединенные к таблицам (макросы,
используемые в %ForEachAtt); pre- и post- скрипты (макросы,
используемые в %ForEachEntity) |
Global |
Все триггеры,
хранимые процедуры и pre- и post-скрипты. |
Синтаксис макросов ERwin
Синтаксис команд макросов ERwin состоит
из ключевых слов, пунктуации и переменных.
Ключевые слова всегда предваряются знаком
процента (%) и должны вводиться в точности, как
указано в таблице (например, %AttFieldName).
В синтаксис должны быть включены фигурные
скобки {} и простые скобки (); запятые необходимы,
если вы включаете в команду более одной
переменной.
Переменные обозначаются угловыми скобками
(например, <macro code1>). При включении своей
макрокоманды в триггер, хранимую процедуру или
сценарий, вы заменяете переменные определенным
вами текстом, числом или другим макросом.
Переменные макросов
Следующий список определяет общие
переменные, используемые в синтаксисе макросов:
<default value>, <value> и <initial
value> представляют определенные
пользователем текст или числа, которые задаются
так, как вы хотите видеть их после раскрытия
макроса ERWin'ом.
<action> представляет корректное
SQL-действие (например, INSERT, UPDATE или DELETE.).
<macro code>, <macro code1>...<macro coden>
представляют любую макропоследовательность,
являющуюся корректной в текущей области
видимости. При последовательном включении в
данную команду нескольких макросов, они
нумеруются от 1 до n.
<predicate> представляет любое
корректное булево выражение, которое имеет
значение TRUE или FALSE, включая выражения,
поддерживаемые макросами ERwin (например, %AttIsFK) и
создаваемые поддерживаемыми булевыми
операторами (например, %!= и другие операторы
сравнения - %And, %Or и %Not).
<prefix> <old prefix> и <new prefix>
представляют текстовое или числовое значение
(например - @ins) или раскрытый макрос (напр., %Parent),
которые добавляются к началу имени таблицы или
столбца при раскрытии макроса. Если определены и
<old prefix> и <new prefix>, то список, создаваемый
макросом, имеет два раздела: первый раздел
объявляет <old prefix> <element>, а второй - <new
prefix> <element>.
<separator> представляет один или более
символов, используемых для разделения списка,
создаваемого макросом. Разделители задаются при
помощи кавычек (напр., "OR").
<table name>, <default name>, <domain name>,
<validation> заменяются именем таблицы, именем
по умолчанию, именем ERwin домена, правилом
контроля целостности или соответствующим
макросом (напр., %TableName, %Child, %DefaultName, %DomainName,
%ValidationName).
<variable> представляет имя переменной,
используемой в триггере, хранимой процедуре или
скрипте.
%!=
Булев предикат, возвращающий "true",
если значение <macro code1> не эквивалентно
значению <macro code2>.
%!=(<macro code1>, <macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
Пример
Код шаблона |
Результат |
%ForEachAtt( ) {%If(%!=(%AttFK){%AttName}} |
general-condition |
%%
Вставляет один символ процента (%) в
раскрытый код триггера.
%%
Область видимости
Глобально
Возвращаемое значение
%
Пример
Код шаблона |
Результат |
/* %%JoinFKPK |
/* %JoinFKPK |
%*
Умножает значения <macro code1> и <macro
code2>.
%*(<macro code1>, <macro code2>)
Область видимости
Глобально
Возвращаемое значение
Число
Пример
Код шаблона |
Результат
раскрытия |
string1="aaaaa"
string2="bbbbbbbbb"
%*(%Len(%:string1), % Len(%:string2)) |
45 |
%+
Складывает значения <macro code1> и <macro
code2>.
%+(<macro code1>, <macro code2>)
Область видимости
Глобально
Возвращаемое значение
Число
Пример
Код шаблона |
Результат |
String1="aaaaa"
String2="bbbbbbbbb"
%+(%Len(%:string1), % Len(%:string2))
|
14 |
%-
Вычитает значение <macro code2> из
значения <macro code1>.
%-(<macro code1>, <macro code2>)
Область видимости
Глобально
Возвращаемое значение
Число
Пример
Код шаблона |
Результат |
string1="aaaaa"
string2="bbbbbbbbb"
%-(%Len(%:string1), % Len(%:string2))
|
- 4 |
%/
Делит значение <macro code1> на значение
<macro code2>.
%/(<macro code1>, <macro code2>)
Область видимости
Глобально
Возвращаемое значение
Число
Пример
Код шаблона |
Результат |
string1="aaaaa"
string2="bbbbbbbbb"
%/(%Len(%:string1), % Len(%:string2))
|
0.5556 |
%:
Возвращает значение <variable>.
%:<variable>
Область видимости
Глобально
Возвращаемое значение
Значение переменной <variable>.
Пример
Код шаблона |
Результат |
%:@ins_customer_id
|
1213 |
%<
Булев предикат, возвращающий значение
"true", если значение <macro code1> меньше, чем
значение <macro code2>.
%<(<macro code1>, <macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
%<=
Булев предикат, возвращающий значение
"true", если значение <macro code1> меньше или
равно значению <macro code2>.
%<=(<macro code1>, <macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
%=
Присваивает значение <macro code>
объявленной переменной <variable> (См. %Decl).
Результатом выражение является присвоение
переменной, результат выполнения не проявляется
в развернутом коде.
%=(<variable>, <macro code>)
Область видимости
Глобально
Возвращаемое значение
Нет
Пример
Код шаблона |
Результат |
%=(@var, %Tablename)
|
Внутренний, @var
присвоено значение %Tablename |
%==
Булев предикат, возвращающий "true",
если значение <macro code1> равно значению <macro
code2>.
%==(<macro code1>, <macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
%>
Булев предикат, возвращающий "true",
если значение <macro code1> больше значения <macro
code2>.
%>(<macro code1>, <macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
%>=
Булев предикат, возвращающий "true",
если значение <macro code1> больше или равно
значению <macro code2>.
%>=(<macro code1>, <macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
%Action
Возвращает название действия, которое
привело к активизации триггера. Зависит от
содержания команды. %Action возвращает значение DELETE,
INSERT или UPDATE. Например, если триггер
активизировался по команде DELETE, %Action вернет
значение DELETE.
%Action
Область видимости
Триггер
Возвращаемое значение
DELETE, INSERT или UPDATE
Пример
Код шаблона |
Результат |
%Action
|
DELETE |
%Actions
Возвращает список действий,
выполненных до или после активизации триггера.
Если триггер является многофункциональным
(например CREATE TRIGGER trigger_name ON table FOR INSERT, UPDATE, DELETE ...),
макрос объявляет все действия.
%Actions(<separator>)
Область видимости
Триггер
Возвращаемое значение
DELETE, INSERT и/или UPDATE
Пример
Код шаблона |
Результат |
%Actions (",")
|
DELETE,DELETE |
%And
Позволяет комбинировать булевы
выражения для создания более сложных выражений.
%And выполняет логическое "И" с булевыми
предикатами, определяемыми <macro code1> и <macro
code2>. Например, код %If{%And(%AttIsFK,%AttIsRolenamed)...}
позволяет выполнять дополнительные действия,
если данный атрибут является внешним ключом и
имеет ролевое имя. Для того, чтобы удовлетворить
требованиям выполнения %And, оба элемента должны
иметь значение "TRUE".
%And(<macro code1>,<macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
%AttDatatype
Возвращает тип данных текущего
атрибута. Примечание: С помощью доменов ERwin
возможно присвоение пользовательского типа
данных. Если атрибут имеет тип данных,
определенный пользователем, этим макросом
предусматривается имя для такого типа данных.
%AttDatatype
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Тип данных атрибута
Пример
Код шаблона |
Результат |
%ForEachAtt ()
{%AttName -> %AttDatatype}
|
Master-number -> int
Movie-copy-number -> int
General-condition -> varchar(10) |
%AttDef
Возвращает определение атрибута
%AttDef
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Определение атрибута
Пример
Код шаблона |
Результат |
/*Если текущий атрибут - master_number, то*/ %AttDef
|
Уникальный
идентификатор фильма |
%AttDefault
Возвращает имя, присвоенное атрибуту
по умолчанию.
%AttDefault
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Имя, присвоенное атрибуту по
умолчанию.
Пример
Код шаблона |
Результат |
%AttDefault
|
SPACES |
%AttDomain
Возвращает имя домена, присвоенное
атрибуту.
%AttDomain
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Имя домена
Пример
Код шаблона |
Результат |
/*Если текущий атрибут cust_phone, то*/
%AttDomain
|
PHONE NUMBER |
%AttFieldName
Возвращает имя столбца, связанного с
текущим атрибутом.
%AttFieldName
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Имя столбца
Пример
Код шаблона |
Результат |
/*Если текущий атрибут renting-customer, то*/
%AttFieldName
|
renting_customer |
%AttFieldWidth
Возвращает длину типа данных атрибута
%AttFieldName
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Число
Пример
Код шаблона |
Результат |
/*Для типа данных varchar (50)*/
%AttFieldWidth
|
50 |
%AttId
Возвращает атрибут ID.
%AttId
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Целое
%AttIsFK
Булев предикат, позволяющий вам
определять, является текущий атрибут членом
внешнего ключа или нет.
%AttIsFK
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
TRUE/FALSE
Пример
Код шаблона |
Результат |
%ForEachAtt() {
%If{%AttIsFK}
%AttName}
|
Master-number movie-copy-number |
%AttIsRolenamed
Булев предикат, позволяющий вам
определить, имеет ли текущий атрибут ролевое имя.
Дополнительная информация приведена в
"%AttIsFK".
%AttIsRolenamed
Область видимости
%ForEachAtt, % ForEachFKAtt, %If
Возвращаемое значение
TRUE/FALSE
%AttIsPK
Булев предикат, позволяющий вам
определить, состоит ли текущий атрибут в
первичном ключе. Дополнительная информация
приведена в "%AttIsFK".
%AttIsPK
Область видимости
%ForEachAtt, % ForEachFKAtt, %If
Возвращаемое значение
TRUE/FALSE
%AttName
Возвращает логическое имя текущего
атрибута.
%AttName
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Имя атрибута
Пример
Код шаблона |
Результат |
/*Если текущий атрибут master-number, то*/
%AttName
|
master-number |
%AttNullOption
Возвращает признак NULL/NOT NULL текущего
атрибута.
%AttNullOption
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
NULL/NOT NULL
%AttPhysDatatype
Возвращает физический тип данных
текущего атрибута, даже для типов данных,
определенных пользователем.
%AttPhysDatatype
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
Тип данных
Пример
Код шаблона |
Результат |
/*Если текущий атрибут master-number, то*/
%AttPhysDatatype
|
Int |
%Atts
Перечисляет все атрибуты сущности
(таблицы) для которой создается триггер, выполняя
определенную функцию для каждого атрибута.
%Atts(<separator>,<action>,<prefix>)
Область видимости
Триггер
Возвращаемое значение
Список действий и атрибутов
Пример
Код шаблона |
Результат |
%Atts (",", update, %Parent)
|
Update (MOVIE_COPY.master_number),
Update (MOVIE_COPY.master_copy_number) |
%AttValidation
Возвращает название правила проверки
(validation name) данного атрибута.
%AttValidation
Область видимости
%ForEachAtt, % ForEachFKAtt
Возвращаемое значение
название правила проверки (validation name).
Пример
Код шаблона |
Результат |
/*Если текущий атрибут due_date, то*/ %AttValidation
|
DUE_DATE_RULE |
%Cardinality
Возвращает тип отношений:
<nothing> = 1:0,1, или более
Р = 1:1 или более
Z = 1:0 или 1
n = 1:n, где n - целое
%Cardinality
Область видимости
RI или Переопределение отношений
Возвращаемое значение
<ничего>, P, Z, <любое целое>
%Child
Возвращает физическое имя таблицы
дочерней сущности в отношении.
%Child
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имя таблицы.
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%Child
|
MOVIE_RENTAL_RECORD |
%ChildAtts
Перечисляет все атрибуты дочерней
сущности в отношении и выполняет над каждым
указанные действия.
%ChildAtts(<separator>,<action>, <prefix>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Названия атрибутов и действия.
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildAtts(" or ", update)
|
Update (movie_copy_number) or
update (master_number) or
... |
%ChildFK
Перечисляет внешние ключи дочерней
сущности в отношении и выполняет над каждым
указанные действия.
%ChildFK(<separator>,<action>,<prefix>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена атрибутов и действия
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildFK(" or ", update)
|
update (master_number) or
update (movie_copy_number) |
%ChildFKDecl
Перечисляет внешние ключи дочерней
сущности в отношении, а затем их типы данных.
%ChildFKDecl (<old prefix>,<new prefix >, <separator>>,<attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена атрибутов FK и типы данных
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildFKDecl(,@ins_,", ")
|
@ins_master_number int,
@ins_movie_copy_number int |
%ChildNK
Перечисляет неключевые элементы
дочерней сущности и выполняет указанные
действия с каждым из них.
%ChildNK(<separator>,<action>,<prefix>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена неключевых атрибутов и действия
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildNK(" or ", update, @)
|
update (@general_condition) |
%ChildNKDecl
Перечисляет неключевые элементы
дочерней сущности в отношении, а затем их типы
данных.
%ChildNKDecl (<old prefix>,<new prefix>, <separator>,<attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена неключевых атрибутов и типы
данных
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildNKDecl(,@ins_,", ")
|
@ins_general_condition varchar(10) |
%ChildParamDecl
Перечисляет все атрибуты дочерней
сущности в отношении, а затем их типы данных. Это
полезно при объявлении параметров хранимых
процедур.
%ChildParamDecl (<old prefix>,<new prefix>, <separator>,<attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена атрибутов и типы данных
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildParamDecl(,@ins_,", ")
|
@ins_master_number int,
@ins_movie_copy_number int, @ins_general_condition
varchar (10), |
%ChildFK
Перечисляет элементы первичного ключа
дочерней сущности в отношении и выполняет с
каждым указанные действия.
%ChildPK(<separator>,<action>, <prefix>)
Область видимости
RI или Переопределение отношений.
Возвращаемое значение
Неключевые имена атрибутов и действия.
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildPK(" or ", update,@)
|
update (@movie_copy_number) or
update (@master_number) |
%ChildPKDecl
Перечисляет первичные ключевые
элементы дочерней сущности в отношении, а затем
их типы данных.
%ChildPKDecl (<old prefix>,<new prefix>, <separator>, <attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена атрибутов PK и типы данных
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ChildPKDecl(,@ins_,", ")
|
@ins_master_number int,
@ins_movie_copy_number int, |
%Concat
Добавляет <value 2> в конец <value 1>,
результатом является объединенная строка.
%Concat(<value1>, <value2>)
Область видимости
Глобально
Возвращаемое значение
Строка
%CurrentDatabase
Возвращает имя базы данных,
используемой при генерации скрипта (в виде
значения вводимого в диалоговом окне Connection
<DB>).
%CurrentDatabase
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
/*При генерации на БД "Testdb"*/
%CurrentDatabase
|
Testdb |
%CurrentFile
Возвращает имя ERwin файла, из которого
был сгенерирован сценарий.
%CurrentFile
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%CurrentFile
|
C:MYFILESMOVIES.ER1 |
%CurrentServer
Возвращает имя целевого сервера,
использованного при генерации скрипта (в виде
значения вводимого в диалоговом окне Connection
<DB>).
%CurrentServer
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%CurrentServer
|
SQL6 |
%CurrentUser
Возвращает имя пользователя,
сгенерировавшего скрипта (в виде значения
вводимого в диалоговом окне Connection <DB>).
%CurrentUser
Область видимости
Глобально
Возвращаемое значение
Cтрока
Пример
Код шаблона |
Результат |
%CurrentUser
|
Ssmith |
%CustomTriggerDefaultBody
Вставляет текст из шаблона триггера в
триггер в развернутой форме.
%CustomTriggerDefaultBody
Область видимости
Триггер.
Возвращаемое значение
Содержимое шаблона CustomTriggerDefaultBody.
%CustomTriggerDefaultFooter
Вставляет текст из шаблона нижнего
колонтитула в триггер в развернутой форме.
%CustomTriggerDefaultFooter
Область видимости
Триггер.
Возвращаемое значение
Содержимое шаблона CustomTriggerDefaultFooter.
%CustomTriggerDefaultHeader
Вставляет текст из шаблона заголовка в
триггер в развернутой форме.
%CustomTriggerDefaultHeader
Область видимости
Триггер.
Возвращаемое значение
Содержимое шаблона CustomTriggerDefaultHeader.
%DatatypeName
Возвращает имя типа данных
%DatatypeName()
Область видимости
Глобально
Возвращаемое значение
Тип данных
Пример
Код шаблона |
Результат |
%ForEachAtt(%Tablename,", ") {%DatatypeName(%AttPhysDatatype)}
|
Varchar |
%DatatypeScale
Для десятичных типов данных, %DatatypeScale
возвращает число десятичных знаков (значение
после десятичной запятой).
%DatatypeScale()
Область видимости
Глобально
Возвращаемое значение
Целое
Пример
Код шаблона |
Результат |
/*Например, для decimal(10,2)*/
%DatatypeScale()
|
2 |
%DatatypeWidth
Возвращает ширину поля описанную в
типе данных.
%DatatypeWidth()
Область видимости
Глобально
Возвращаемое значение
Целое
Пример
Код шаблона |
Результат |
/* Например, для decimal(10,2)*/
%DatatypeWidth()
|
10 |
%Datetime
Возвращает текущие дату и время.
%Datetime
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%Datetime
|
Wed Feb 17 12:56:22 1998 |
%DBMS
Возвращает имя базы данных.
%DBMS
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%DBMS
|
ORACLE |
%DBMSDelim
Возвращает оператор разделитель для
выбранной СУБД.
%DBMSDelim
Область видимости
Глобально
Возвращаемое значение
, или ; или другой разделитель.
%Decl
Объявляет <переменную> и,
необязательно, инициализирует ее с помощью
<initial value>. Например, если вы использовали
оператор %Decl(var1,0), то это значит, что объявляется
переменная var1, которая инициализируется
значением 0. Возвращаемое значение не
генерируется.
%Decl(<variable>,<initial value>)
Область видимости
Глобально
Возвращаемое значение
Нет
Пример
Код шаблона |
Результат |
%Decl(var1,0)
|
Внутренне, var1
присваивается значение 0. |
%DefaultName
Возвращает имя по умолчанию.
%DefaultName
Область видимости
%ForEachDefault
Возвращаемое значение
Имя по умолчанию.
Пример
Код шаблона |
Результат |
%ForEachDefault(", " ){%DefaultName}
|
SPACES, PERSON-NAME, ADDRESS |
%DefaultValue
Возвращает значение по умолчанию.
%DefaultValue(<default name> или %DefaultValue
Область видимости
Глобально (при использовании
аргумента - <default name>), либо %ForEachDefault (без
аргумента).
Возвращаемое значение
Значение по умолчанию.
Пример
Код шаблона |
Результат |
%ForEachDefault(", " ){%DefaultValue}
|
NEW RELEASE, COMEDY, DRAMA, CHILDREN,
HORROR |
%DomainDatatype
Возвращает физический тип данных
домена.
%DomainDatatype(<domain name>) или %DomainDatatype
Область видимости
Глобально (при использовании
аргумента - <domain name>), либо %ForEachDomain.
Возвращаемое значение
Значение домена по умолчанию.
Пример
Код шаблона |
Результат |
%ForEachDomain(", ") {%DomainDatatype}
|
varchar(10), int, char |
%DomainDef
Возвращает имя, по умолчанию
присвоенное домену.
%DomainDef(<domain name>) или %DomainDef
Область видимости
Глобально (при использовании
аргумента <domain name>), либо %ForEachDomain.
Возвращаемое значение
Значение домена по умолчанию.
Пример
Код шаблона |
Результат |
%ForEachDomain(", ") { %DomainDef}
|
NEW RELEASE |
%DomainName
Возвращает имя домена.
%DomainName
Область видимости
%ForEachDomain
Возвращаемое значение
Имя домена
Пример
Код шаблона |
Результат |
%ForEachDomain{%DomainName}
|
PERSON NAME
ADDRESS |
%DomainNullOption
Возвращает информацию о том какие NULL
атрибуты, будут иметь столбцы созданные с
использованием домена <domain name>.
%DomainNullOption (<domain name>) или %DomainNullOption
Область видимости
Глобально (при использовании
аргумента <domain name>), либо %ForEachDomain.
Возвращаемое значение
NULL, NOT NULL, IDENTITY, WITH NULL или NOT NULL WITH DEFAULT
%DomainValidation
Возвращает название правила проверки
(validation name) присоединенного к домену.
%DomainValidation(<domain name>) или %DomainValidation
Область видимости
Глобально (при использовании
аргумента <domain name>), либо %ForEachDomain.
Возвращаемое значение
название правила проверки.
Пример
Код шаблона |
Результат |
%ForEachDomain {%DomainValidation}
|
IS VALID CUSTOMER,
DUE DATE |
%EntityId
Возвращает идентификатор сущности или
таблицы
%EntityId (<entity or tablename>)
Область видимости
RI, Переопределение отношений или
Триггер
Возвращаемое значение
Целое
Пример
Код шаблона |
Результат |
%EntityId(%Parent)
|
1234 |
%EntityName
Возвращает имя сущности или таблицы
%EntityName (<entity or tablename>)
Область видимости
RI, Переопределение отношений или
Триггер
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%EntityName(%Parent)
|
MOVIE-COPY |
%File
Выполняет программу макроса,
заключенного в фигурные скобки и записывает
результат в данный файл. Этот макрос
предусматривает работу с учетом ограничения Windows
3.х на размер строки в 64 кб.
%File (<filename>){<macro code>}
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%File (C:erwmyfile.tst)
{%ForEachAtt(Parent, ", ") (%AttFieldName ...}
|
<создает файл и
включает указанную информацию> |
%Fire
Определяет, когда запускается триггер.
Доступно только для INFORMIX, ORACLE7 и Rdb.
%Fire
Область видимости
Триггер.
Возвращаемое значение
BEFORE или AFTER
Пример
Код шаблона |
Результат |
%Fire
|
BEFORE |
%ForEachAtt
Раскрывает макрос для каждого
атрибута данной таблицы.
%ForEachAtt(<table name>,<separator>) {<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого
атрибута данной таблицы.
Пример
Код шаблона |
Результат |
%ForEachAtt(%Parent, ", ")
{%AttFieldName}
|
master_number,
movie_copy_number,
general_condition |
%ForEachChildRel
Раскрывает <relationship code> (код
отношений) для каждого отношения в котором
триггерная сущность является дочерней.
%ForEachChildRel(<separator>) {<relationship code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого
отношения.
Пример
Код шаблона |
Результат |
%ForEachChildRel("go") {insert %Parent values(%ParentAtts(", ",,@ins_) }
|
insert MOVIE_COPY
values(@ins_master_number, @ins_movie_copy_number, @ins_general_condition)
go |
%ForEachDefault
Раскрывает макрос для всех атрибутов,
имеющих default значения.
%ForEachDefault (<separator>) {<macro code>}
Область видимости
Глобально
Возвращаемое значение
Результат <macro code> для всех
атрибутов имеющих default значения.
Пример
Код шаблона |
Результат |
%ForEachDefault () {%DefaultName }
|
FILL_WITH_SPACES
SET_TO_NULL
SET_TO_ZERO |
%ForEachDomain
Раскрывает макрос для всех доменов,
которые реализованы как пользовательские типы
данных.
%ForEachDomain(<separator>){<macro code>}
Область видимости
Глобально
Возвращаемое значение
Результат <macro code>
Пример
Код шаблона |
Результат |
%ForEachDomain(","){%DomainName }
|
ADDRESS, PERSON NAME |
%ForEachEntity
Раскрывает макрос для всех сущностей
текущей предметной области (subject area).
%ForEachEntity(<separator>) {<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждой
сущности.
Пример
Код шаблона |
Результат |
%ForEachEntity() {%TableName}
|
MOVIE_COPY
MOVIE_RENTAL_RECOR |
%ForEachFKAtt
Раскрывает макрос для каждого
атрибута внешнего ключа.
%ForEachFKAtt(<separator>){<macro code>}
Область видимости
RI или Переопределение отношений.
Возвращаемое значение
Результат <macro code> для каждого
атрибута FK.
Пример
Код шаблона |
Результат |
%ForEachFKAtt(", ")
{%AttFieldName}
|
Master_number, movie_copy_number |
%ForEachIndex
Раскрывает макрос для всех индексов в
текущей предметной области. <table> используется
по умолчанию для таблицы в текущей области
видимости; может использоваться для присвоения
имени другой таблице (%Parent, MOVIE_COPY). <type>
фильтрует тип индекса (AK, IE, IF, PK, AK1, IE2 и т.д.). По
умолчанию для всех.
%ForEachIndex ([<table>],[<type>],[<name>],[<separator>]){<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого
индекса
Пример
Код шаблона |
Результат |
%ForEachIndex { %IndexName
%IndexType}
|
XPKMOVIE_COPY PK |
%ForEachIndexMem
Раскрывает макрос для всех аттрибутов,
входящих в индексы текущей предметной области.
<sequence> может использоваться для ввода номера,
присвоенного определенному члену индекса. По
умолчанию для всех членов.
%ForEachIndexMem ([<sequence>],[<separator>]) {<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого члена
индекса.
Пример
Код шаблона |
Результат |
%ForEachIndex {%ForEachIndexMem() {%AddDatatype }}
|
int
int
varchar (10) |
%ForEachKey
Раскрывает макрос для всех
альтернативных ключей и неуникальных индексов
(IE) в текущей предметной области.
%ForEachKey ([<table>],[<type>],[<separator>]) {<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого ключа.
Пример
Код шаблона |
Результат |
%ForEachKey (%Parent,,,) {%KeyName}
|
AK1,
IE1 |
%ForEachKeyMem
Раскрывает макрос для всех членов
ключа.
%ForEachKeyMem ([<sequence>],[<separator>]) {<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого члена
индекса.
Пример
Код шаблона |
Результат |
%ForEachKey {%ForEachKeyMem() {%AttName}}
|
renting-customer |
%ForEachParentRel
Раскрывает <relationship code> для каждого
отношения, где сущность, для которой создаётся
триггер, является родительской.
%ForEachParentRel(<separator>){<relationship code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого
отношения.
Пример
Код шаблона |
Результат |
%ForEachParentRel ()
{insert %Parent values (%ParentAtts(",",,@ins_)}
|
insert MOVIE_COPY
values(@ins_master_number, @ins_movie_copy_number, @ins_general_condition) |
%ForEachValidValue
Раскрывает макрос для всех допустимых
значений текущего правила (validation).
%ForEachValidValue(<separator>) {<macro code>}
Область видимости
Триггер., %ForEachValidation
Возвращаемое значение
Результат <macro code> для каждого
допустимого значения.
Пример
Код шаблона |
Результат |
%ForEachValidValue(","{%ValidValue =>%ValidValueDef }
|
N =>New (recent release)
S =>Standard release
O =>Old movie
C =>Classic |
%ForEachValidation
Раскрывает макрос для всех правил.
%ForEachValidation(<separator>){<macro code>}
Область видимости
Триггер.
Возвращаемое значение
Результат <macro code> для каждого
правила.
Пример
Код шаблона |
Результат |
%ForEachValidation () {%Validation Name }
|
Due Date Validation |
%If %Else
Условное выполнение %If<macro code1>, если
логическое выражение имеет значение "true",
либо %Else<macro code2>, если логическое выражение
имеет значение "false". Оператор %Else -
необязателен.
%If (<predicate>) {<macro code1>} %Else {<macro code2>}
Область видимости
Глобально
Возвращаемое значение
Результат <macro code1> каждый раз, если
значение <predicate> = TRUE.
Результат <macro code2> каждый раз, если
значение <predicate> = FALSE.
Пример
Код шаблона |
Результат |
%ForEachAtt() { %If(%AttIsPK) {%AttName -> PK}}
|
master-number -> PK
movie_copy_number -> PK |
%Include
Позволяет вам включить текст макроса
при работе с несколькими файлами или шаблонами
триггеров.
%Include ("<path name>")
%Include (<trigger template name>)
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%Include("<c:ertrg.tdl")
|
<Все программы,
включенные в файл c:ertrg.tdl> |
%IndexName
Возвращает имя индекса.
%IndexName
Область видимости
Триггер, %ForEachIndex, %ForEachIndexMem
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%IndexName
|
XPK_MOVIE_COPY |
%IndexType
Возвращает тип индекса.
%IndexType
Область видимости
Триггер., %ForEachIndex, %ForEachIndexMem
Возвращаемое значение
FK, PK, AK, IE1 и т.д.
Пример
Код шаблона |
Результат |
%IndexType
|
PK |
%JoinFKPK
Позволяет произвести соединение по
внешнему ключу дочерней сущности и первичному
ключу родительской сущности исходя из
реляционной связи (Join между FK дочерней и PK
родительской сущностей).
%JoinFKPK ([<child table>, <parent table>, <comparison op>,<separator>)
Область видимости
RI или Переопределение отношений,
оператор WHERE или JOIN
Возвращаемое значение
Программа, поддерживаемая сравнением
значений PK и FK в отношении.
Пример
Код шаблона |
Результат |
%JoinFKPK(%Child,deleted,"<>"," or")
|
MOVIE_RENTAL_RECOR.master_number<>
deleted.master_number or
MOVIE_RENTAL_RECOR.movie_copy_number <> deleted.movie_copy
_number |
%JoinPKPK
Позволяет произвести соединение по
первичным ключам двух сущностей.
%JoinPKPK (<table>, <correlation>, <comparison op>,<separator>)
Область видимости
RI, Переопределение отношений, Триггер,
условный оператор поиска WHERE
Возвращаемое значение
Текст, производящий сравнение
значений PK из двух таблиц.
Пример
Код шаблона |
Результат |
%JoinPKPK(%Child,ins,"<>"," or")
|
MOVIE_RENTAL_RECOR.renting_customer
<> ins.renting_customer or
MOVIE_RENTAL_RECOR.master_number <> deleted.master_number or ... |
%KeyName
Возвращает имя ключа.
%KeyName
Область видимости
Триггер., %ForEachKey, % ForEachKeyMem
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%KeyName
|
AK1 |
%Len
Возвращает длину <macro code>.
%Len(<macro code>)
Область видимости
Глобально
Возвращаемое значение
Целое
Пример
Код шаблона |
Результат |
string1='12345'
%Len(%:string1)
|
5 |
%Lower
Преобразует результат <macro code> в
нижний регистр.
%Lower (<macro code>}
Область видимости
Глобально
Возвращаемое значение
Строка в нижнем регистре.
Пример
Код шаблона |
Результат |
string1='movie'
%Lower(%:string1)
|
movie |
%Max
Сравнивает <value1> и <value2> и
возвращает большее.
%Max(<value1>,<value2>)
Область видимости
Глобально
Возвращаемое значение
Большее значение из сравниваемых.
Пример
Код шаблона |
Результат |
var1=8
var2=5
%Max(var1, var2)
|
8 |
%Min
Сравнивает <value1> и <value2> и
возвращает меньшее.
%Min(<value1>,<value2>)
Область видимости
Глобально
Возвращаемое значение
Меньшее значение из сравниваемых
Пример
Код шаблона |
Результат |
var1=8
var2=5
%Min(var1, var2)
|
5 |
%NK
Перечисляет все неключевые атрибуты
триггерной сущности и выполняет определенные
действия с каждым.
%NK (<separator>,<action>,<prefix>)
Область видимости
Триггер.
Возвращаемое значение
Атрибут и действие
Пример
Код шаблона |
Результат |
%NK(" or, update,%Parent)
|
update(MOVIE_COPY. general_condition)
or... |
%NKDecl
Перечисляет неключевые атрибуты
триггерной сущности, а затем их типы данных.
%NKDecl(<old prefix>,<new prefix>,<separator>,<attribute/type separator>)
Область видимости
Триггер.
Возвращаемое значение
Имена и типы данных атрибутов
Пример
Код шаблона |
Результат |
%NKDecl(,@ins_,", ")
|
@ins_general_condition varchar(10) |
%Not
В булевом выражении, определяемом в
<macro code>, %Not осуществляет "логическое НЕ".
Позволяет комбинировать булевы выражения для
создания более сложных выражений.
%Not (<macro code>)
Область видимости
Глобально, %If
Возвращаемое значение
Результат макроса.
Пример
Код шаблона |
Результат |
%ForEachAtt() {%If(%Not(%==(%AttDatatype, int)))
{%AttName}}
|
general-condition |
%NotnullFK
Сравнивает внешний ключ дочерней
сущности <child table> из отношения с <null expression>.
Этот макрос выполняется, только если отношение
не определяющее и допустимы null значения.
%NotnullFK(<child table>, <not null expression>,<prefix>,<separator>)
Область видимости
RI или Переопределение отношений,
оператор WHERE
Возвращаемое значение
NULL выражение для каждого FK,
допускающего нулевые значения.
Пример
Код шаблона |
Результат |
where %NotnullFK(,"is null",," or")
|
where master_number is null
or movie_copy_number is null |
%Or
В булевых выражениях, определяемых в
<macro code1> и <macro code2>, %Or осуществляет
"логическое ИЛИ". Позволяет комбинировать
булевы выражения для создания более сложных
выражений. Например, %If{%Or(%AttisFK,%AttIsRolenamed)...}
позволяет выполнять дополнительные действия,
если данный атрибут является внешним ключом или
имеет ролевое имя. Макрос выполняется, если любой
из элементов имеет значение "TRUE".
%Or (<macro code1>,<macro code2>)
Область видимости
Глобально, %If
Возвращаемое значение
TRUE/FALSE
Пример
Код шаблона |
Результат |
%If(%Or(%AttIsFK,%AttIsRolenamed)) {%AttName}
|
master_copy_number |
%ParamDecl
Перечисляет все атрибуты триггерной
сущности, а затем их типы данных.
%ParamDecl(<old prefix>,<new prefix>,<separator>,<attribute/type separator>)
Область видимости
Триггер.
Возвращаемое значение
Атрибуты и типы данных.
Пример
Код шаблона |
Результат |
%ParamDecl(@ins_,", ")
|
@ins_master_number int,
@ins_movie_copy_number int,
@ins_general_condition varchar(10) |
%ParamPass
Присваивает значения параметрам
процедур, определенным в <old prefix> и/или в <new
prefix>, для всех атрибутов триггерной сущности.
Доступен только для Ingres.
%ParamDecl(<old prefix>,<new prefix>,<param/value separator>,<param separator>)
Область видимости
Триггер.
Возвращаемое значение
Список параметров для Ingres.
Пример
Код шаблона |
Результат |
%ParamPass(,new," = ")
|
master-number = new.master_number |
%Parent
Возвращает физическое имя таблицы
родительской сущности из реляционной связи.
%Parent
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%Parent
|
MOVIE_COPY |
%ParentAtt
Раскрывает любой макрос атрибутов
(например, %AttFieldName, %AttDatatype) для первичного
родительского ключевого атрибута, от которого
мигрировал текущий атрибут.
%ParentAtt(<attribute macro>)
Область видимости
%ForEachAtt, %ForEachFKAtt
Возвращаемое значение
Результат <attribute macro>
Пример
Код шаблона |
Результат |
%ForEachAtt() {%ParentAtt%AttFieldName)}
|
master_number |
%ParentAtts
Перечисляет все атрибуты родительской
сущности в отношении, и выполняет с каждым
указанные действия.
%ParentAtts(<separator>,<action>,<prefix>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Атрибуты и действия
Пример
Код шаблона |
Результат |
%ParentAtts(" or ",update,%Parent)
|
update(MOVIE.master_number) or
update(MOVIE.customer_number)... |
%ParentNK
Перечисляет неключевые атрибуты
родительской сущности в отношении и выполняет с
каждым указанные действия.
%ParentNK(<separator>,<action>,<prefix>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Атрибуты и действия
Пример
Код шаблона |
Результат |
%ParentNK(" or ",update,%Parent)
|
update(MOVIE.movie_name) or
update(MOVIE.movie_rating)or
update(MOVIE.movie_year) |
%ParentNKDecl
Перечисляет неключевые атрибуты
родительской сущности в отношении, а затем - типы
данных.
%ParentNKDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Атрибуты и типы данных FK.
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ParentNKDecl(,@ins_,", ")
|
@ins_movie_name varchar(50),
@ins_movie_rating varchar(5),
@ins_movie_rental_rate money |
%ParentParamDecl
Перечисляет атрибуты родительской
сущности в отношении, а затем - их типы данных.
%ParentParamDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Атрибуты и типы данных.
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ParentParamDecl(,@ins_,", ")
|
@ins_movie_name varchar(50),
@ins_movie_rating varchar(5),
@ins_movie_rental_rate money |
%ParentPK
Перечисляет элементы первичного ключа
родительской сущности в отношении и выполняет с
ними указанные действия.
%ParentPK(<separator>,<action>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Атрибуты первичных ключей и действия.
Пример
Код шаблона |
Результат |
%ParentPK
|
Update(MOVIE_COPY.master_number)
Update(MOVIE_COPY.movie_copy_number) |
%ParentPKDecl
Перечисляет элементы первичного ключа
родительской сущности в отношении, а затем - их
типы данных.
%ParentPKDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имена атрибутов первичных ключей и
типы данных.
Пример
Код шаблона |
Результат |
/*Если текущее отношение <is in stock as>, то*/
%ParentPKDecl(,@ins_)
|
@ins_master_number varchar(10),
@ins_movie_copy_number varchar(10),
@ins_customer_number varchar(10) |
%PhysRelName
Возвращает физическое имя отношения.
%PhysRelName
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%PhysRelName
|
is_rented_under |
%PK
Перечисляет элементы первичного ключа
триггерной сущности и выполняет с ними указанные
действия.
%PK(<separator>,<action>,<prefix>)
Область видимости
Триггер.
Возвращаемое значение
Первичные ключевые атрибуты и
действия.
Пример
Код шаблона |
Результат |
%PK(,update,%Parent)
|
update(MOVIE_COPY.master_number)
update(MOVIE_COPY.movie_copy_number) |
%PKDecl
Перечисляет элементы первичного ключа
сущности, а затем - их типы данных.
%PKDecl (<old prefix>,<new prefix>,<separator>>,<attribute/type separator>))
Область видимости
Триггер.
Возвращаемое значение
Имена первичных ключевых атрибутов и
типы данных.
Пример
Код шаблона |
Результат |
%PKDecl(,@ins_)
|
@ins_master_number varchar(10),
@ins_movie_copy_number varchar(10) |
%RefClause
Создает описание Reference, исходя из
информации OLD и NEW, добавленной в Редакторе
Триггерного Объекта. Доступен только для INFORMIX,
Ingres, ORACLE7 и Rdb.
%RefClause
Область видимости
Триггер.
Возвращаемое значение
Оператор ссылки
Пример
Код шаблона |
Результат |
%RefClause
|
REFERENCES NEW as inserted OLD as Deleted |
%RelId
Возвращает идентификатор отношения.
%RelId
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Целое
%RelIsNonull
Проверяет отношения на наличие
нулевых выражений и возвращает "true", если null
- недопустим, и "false", если допустим.
%RelIsNonull
Область видимости
RI или Переопределение отношений, %If
Возвращаемое значение
TRUE/FALSE
%RelRI
Возвращает тип отношения ссылочной
целостности ( CASCADE, RESTRICT...) для указанного
действия <action> (insert, update, delete) и <RI type>
(родительский или дочерний).
%RelRI(<action>,<RI type>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
CASCADE, RESTRICT, SET NULL, SET DEFAULT или NONE
Пример
Код шаблона |
Результат |
%RelRI(Update, Child)
|
CASCADE |
%RelTemplate
Раскрывает шаблон, присоединенный к
текущему отношению. Если никакой макрос не
присвоен, раскрывается шаблон ссылочной
целостности диаграммы по умолчанию.
%RelTemplate
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Раскрывает фрагмент программы
отношения в соответствии с типом триггера.
%RelType
Возвращает тип отношения. Допустимые
значения типа отношения и их определения
включают: RT_ID (определено), RT_NI (не определено), RT_SC
(субтип) или RT_MM (многие-ко-многим).
%RelType
Область видимости
RI или Переопределение отношений
Возвращаемое значение
RT_ID, RT_NI, RT_SC или RT_MM
Пример
Код шаблона |
Результат |
%RelType
|
RT_ID |
%Scope
Возвращает определение того, как
выполняется триггер. Доступен только для ORACLE7.
%Scope
Область видимости
Триггер.
Возвращаемое значение
FOR EACH ROW или FOR EACH TABLE
Пример
Код шаблона |
Результат |
%Scope
|
FOR EACH ROW |
%SetFK
Перечисляет внешние ключевые элементы
дочерней сущности в отношении и присваивает
каждому члену указанное значение.
%SetFK (<child table>,<value>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имя и значение атрибута внешнего ключа
Пример
Код шаблона |
Результат |
%SetFK(%Child,NULL)
|
MOVIE_RENTAL_RECOR.master_number = NULL
MOVIE_RENTAL_RECOR.movie_copy_number = NULL
MOVIE_RENTAL_RECOR.customer_number = NULL
MOVIE_RENTAL_RECOR.rental_number = NULL |
%SetPK
Перечисляет первичные ключевые
элементы указанной таблицы и присваивает
каждому члену указанное значение.
%SetPK(<table>,<value>)
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Имя и значение атрибута первичного
ключа.
Пример
Код шаблона |
Результат |
%SetPK(%Parent,0)
|
MOVIE_COPY.master_number = 0
MOVIE_COPY.movie_copy_number = 0 |
%Substitute
Заменяет строку <pattern> в строке
<value> строкой <substitute>.
%Substitute(<value>,<pattern>,<substitute>)
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
/*Если имя дочерней таблицы movie_copy_number*/
%Substitute(%Child,movie,ins_movie
|
ins_movie_copy_number |
%Substr
Возвращает подстроку при раскрытии
данного <macro code>. <length> (длина) необязательна.
%Substr(<macro code>,<initial pos>,<length>)
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%Substr(macro,1,3)
|
Mac |
%Switch
Сравнивает аргумент с указанной
альтернативой. ERwin раскрывает макрос в
соответствии с совпавшей альтернативой. Если ни
одного совпадения не происходит, ERwin выполняет
макрос по умолчанию.
%Switch (<argument>) {%Choose(<choice 1>) {<macro code 1>} %Choose(<choice 2>) {<macro code2>} <etc...> %Default {<default macro code>}}
Область видимости
Глобально
Возвращаемое значение
Значение макроса
Пример
Код шаблона |
Результат |
*/Если %TableName - MOVIE_COPY*/
%Switch (%TableName) {%Choose(MOVIE_COPY) {%FK}
%Choose(MOVIE_RENTAL_RECOR){%PK}
%Default{%PK}}
|
master_number |
%TableName
Возвращает физическое имя таблицы
триггерного объекта.
%TableName
Область видимости
Триггер.
Возвращаемое значение
Имя таблицы
Пример
Код шаблона |
Результат |
%TableName
|
MOVIE_COPY |
%TemplateName
Возвращает имя шаблона триггера,
хранимой процедуры или сценария.
%TemplateName
Область видимости
Триггер.
Возвращаемое значение
Имя шаблона
Пример
Код шаблона |
Результат |
%TemplateName
|
CHILD_DELETE_CASCADE |
%TriggerName
Возвращает физическое имя триггера.
%TriggerName
Область видимости
Триггер.
Возвращаемое значение
Имя триггера
Пример
Код шаблона |
Результат |
%TriggerName
|
MOVIE_COPY_CHILD_DELETE_CASCADE |
%TriggerRelRI
Булево выражение, имеющее значение
"true", если данные триггер и отношение
соответствуют данному действию
<action>(Update/Delete/Insert), <RI type> (Child/Parent) и <integrity>
(Cascade/Restrict/Set Null/Set Default).
%TriggerRelRI(<action>,<RI type>,<integrity>)
Область видимости
RI или Переопределение отношений, %If
Возвращаемое значение
TRUE/FALSE
Пример
Код шаблона |
Результат |
%ForEachChildRel() {%If(%TriggerRelRI(Update,Child,Cascade))
{%VerbPhrase Child Update Cascade}}
|
is rented under Child Update
Cascade |
%UpdateChildFK
Перечисляет внешние ключевые элементы
дочерней сущности в отношении и выполняет
обновление с каждым членом. Доступно только для
ORACLE7, SQL Server и SYBASE.
%UpdateChildFK()
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Значение и действие внешнего ключа
Пример
Код шаблона |
Результат |
%UpdateChildFK()
|
update(master_number) or
update(movie_copy_number)... |
%UpdateParentPK
Перечисляет первичные ключевые
элементы родительской сущности в отношении и
выполняет обновление каждого члена. Доступно
только для ORACLE7, SQL Server и SYBASE.
%UpdateParentPK()
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Значение и действие первичного ключа
Пример
Код шаблона |
Результат |
%UpdateParentPK()
|
Update(master_number) |
%UpdatePK
Перечисляет первичные ключевые
элементы триггерной сущности и выполняет
обновление каждого члена. Доступно только для
ORACLE7, SQL Server и SYBASE.
%UpdatePK()
Область видимости
Триггер.
Возвращаемое значение
Значение и действие первичного ключа
Пример
Код шаблона |
Результат |
%UpdatePK()
|
Update(master_number)
Update(movie_copy_number) |
%Upper
Преобразует раскрытый <macro code> в
верхний регистр.
%Upper (<macro code>)
Область видимости
Глобально
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%Upper(%EntityName)
|
MOVIE COPY |
%ValidationHasValidValues
Булево выражение, позволяющее вам
определять, имеет ли текущее допущение
корректные значения.
% ValidationHasValidValues(<validation name>)
Область видимости
Глобально (с аргументом <validation name>)
или %ForEachValidation, %If
Возвращаемое значение
TRUE/FALSE
%ValidationName
Возвращает название правила проверки
допустимости.
%ValidationName
Область видимости
%ForEachValidation
Возвращаемое значение
Имя правила проверки допустимости
Пример
Код шаблона |
Результат |
%ValidationName
|
Due Date Validation |
%ValidationRule
Возвращает правило проверки со
стороны сервера.
%ValidationRule(<validation name>} или %ValidationRule
Область видимости
Глобально (с аргументом <validation name>)
или %ForEachValidation
Возвращаемое значение
Строка правила проверки допустимости
Пример
Код шаблона |
Результат |
%ValidationRule
(Valid CustNumber)
|
@col BETWEEN 1000 AND 9999 |
%ValidValue
Возвращает допустимые значения данных
%ValidValue
Область видимости
%ForEachValidValue
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
%ValidValue
|
CHILDREN |
%ValidValueDef
Возвращает определение допустимого
значения.
%ValidValueDef
Область видимости
%ForEachValidValue
Возвращаемое значение
Строка
Пример
Код шаблона |
Результат |
/*Если допустимые значения: COMEDY,
HORROR, DRAMA, NEW RELEASE и CHILDREN,
определение одного из них может быть:*/
%ValidValueDef
|
A movie that is of interest to children. |
%VerbPhrase
Возвращает сообщение об отношении.
%VerbPhrase
Область видимости
RI или Переопределение отношений
Возвращаемое значение
Сообщение об отношении
Пример
Код шаблона |
Результат |
%VerbPhrase
|
is rented under |
|