|  | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Макросы ERwinИсточник: Технология клиент-сервер, #4/1998 Поддержка макросов целевым серверомВ шаблонах, создаваемых для триггеров, хранимых процедур, pre- (предварительных) и post-скриптов генерации схем, можно использовать макросы ERwin в случае, если эти возможности поддерживаются целевой СУБД. Все макросы, за исключением тех, которые особо определены, могут использоваться для всех целевых серверов, поддерживаемых ERwin. Поддержка вашим сервером RI (Referential Integrity) - триггеров, хранимых процедур и/или сценариев - описана в документации сервера. Использование справочника по макросамСправочник макросов организован в алфавитном порядке по именам макросов. Информация по каждому макросу включает его описание, синтаксис, область видимости (например, операторы или фрагменты кода, где он может использоваться), возвращаемое значение; и, как правило, пример текста шаблона макроса (шаблона) и соответствующий ему "раскрываемый текст" (рис.1). Рассмотрим каждый элемент: 
 Примечание: Пример модели, приведенный выше, показывает физические имена таблиц и столбцов, обозначенные названиями с символом подчеркивания (например, MOVIE_COPY, movie_copy_number). Различные макросы ERwin могут возвращать либо логическое имя ERwin (которое может содержать дефисы или пробелы), либо физические имена баз данных (в которых дефисы или пробелы заменяются символом подчеркивания), в зависимости от ваших потребностей. 
 Синтаксис макросов ERwin
 Синтаксис команд макросов ERwin состоит из ключевых слов, пунктуации и переменных. 
 Переменные макросов
 Следующий список определяет общие переменные, используемые в синтаксисе макросов: 
 
 Рис. 1 Окно Table Trigger Editor. В правой части находится шаблон,  %!=
 Булев предикат, возвращающий "true", если значение <macro code1> не эквивалентно значению <macro code2>. %!=(<macro code1>, <macro code2>) Область видимости 
 Глобально, %If Возвращаемое значение 
 TRUE/FALSE Пример 
 
 %%
 Вставляет один символ процента (%) в раскрытый код триггера. %% Область видимости 
 Глобально Возвращаемое значение 
 % Пример 
 
 %*
 Умножает значения <macro code1> и <macro code2>. %*(<macro code1>, <macro code2>) Область видимости 
 Глобально Возвращаемое значение 
 Число Пример 
 
 %+
 Складывает значения <macro code1> и <macro code2>. %+(<macro code1>, <macro code2>) Область видимости 
 Глобально Возвращаемое значение 
 Число Пример 
 
 %-
 Вычитает значение <macro code2> из значения <macro code1>. %-(<macro code1>, <macro code2>) Область видимости 
 Глобально Возвращаемое значение 
 Число Пример 
 
 %/
 Делит значение <macro code1> на значение <macro code2>. %/(<macro code1>, <macro code2>) Область видимости 
 Глобально Возвращаемое значение 
 Число Пример 
 
 %:
 Возвращает значение <variable>. %:<variable> Область видимости 
 Глобально Возвращаемое значение 
 Значение переменной <variable>. Пример 
 
 %<
 Булев предикат, возвращающий значение "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>) Область видимости 
 Глобально Возвращаемое значение 
 Нет Пример 
 
 %==
 Булев предикат, возвращающий "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 Пример 
 
 %Actions
 Возвращает список действий, выполненных до или после активизации триггера. Если триггер является многофункциональным (например CREATE TRIGGER trigger_name ON table FOR INSERT, UPDATE, DELETE ...), макрос объявляет все действия. %Actions(<separator>) Область видимости 
 Триггер Возвращаемое значение 
 DELETE, INSERT и/или UPDATE Пример 
 
 %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 Возвращаемое значение 
 Тип данных атрибута Пример 
 
 %AttDef
 Возвращает определение атрибута %AttDef Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Определение атрибута Пример 
 
 %AttDefault
 Возвращает имя, присвоенное атрибуту по умолчанию. %AttDefault Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Имя, присвоенное атрибуту по умолчанию. Пример 
 
 %AttDomain
 Возвращает имя домена, присвоенное атрибуту. %AttDomain Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Имя домена Пример 
 
 %AttFieldName
 Возвращает имя столбца, связанного с текущим атрибутом. %AttFieldName Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Имя столбца Пример 
 
 %AttFieldWidth
 Возвращает длину типа данных атрибута %AttFieldName Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Число Пример 
 
 %AttId
 Возвращает атрибут ID. %AttId Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Целое %AttIsFK
 Булев предикат, позволяющий вам определять, является текущий атрибут членом внешнего ключа или нет. %AttIsFK Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 TRUE/FALSE Пример 
 
 %AttIsRolenamed
 Булев предикат, позволяющий вам определить, имеет ли текущий атрибут ролевое имя. Дополнительная информация приведена в "%AttIsFK". %AttIsRolenamed Область видимости 
 %ForEachAtt, % ForEachFKAtt, %If Возвращаемое значение 
 TRUE/FALSE %AttIsPK
 Булев предикат, позволяющий вам определить, состоит ли текущий атрибут в первичном ключе. Дополнительная информация приведена в "%AttIsFK". %AttIsPK Область видимости 
 %ForEachAtt, % ForEachFKAtt, %If Возвращаемое значение 
 TRUE/FALSE %AttName
 Возвращает логическое имя текущего атрибута. %AttName Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Имя атрибута Пример 
 
 %AttNullOption
 Возвращает признак NULL/NOT NULL текущего атрибута. %AttNullOption Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 NULL/NOT NULL %AttPhysDatatype
 Возвращает физический тип данных текущего атрибута, даже для типов данных, определенных пользователем. %AttPhysDatatype Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 Тип данных Пример 
 
 %Atts
 Перечисляет все атрибуты сущности (таблицы) для которой создается триггер, выполняя определенную функцию для каждого атрибута. %Atts(<separator>,<action>,<prefix>) Область видимости 
 Триггер Возвращаемое значение 
 Список действий и атрибутов Пример 
 
 %AttValidation
 Возвращает название правила проверки (validation name) данного атрибута. %AttValidation Область видимости 
 %ForEachAtt, % ForEachFKAtt Возвращаемое значение 
 название правила проверки (validation name). Пример 
 
 %Cardinality
 Возвращает тип отношений: 
 %Cardinality Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 <ничего>, P, Z, <любое целое> %Child
 Возвращает физическое имя таблицы дочерней сущности в отношении. %Child Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имя таблицы. Пример 
 
 %ChildAtts
 Перечисляет все атрибуты дочерней сущности в отношении и выполняет над каждым указанные действия. %ChildAtts(<separator>,<action>, <prefix>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Названия атрибутов и действия. Пример 
 
 %ChildFK
 Перечисляет внешние ключи дочерней сущности в отношении и выполняет над каждым указанные действия. %ChildFK(<separator>,<action>,<prefix>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена атрибутов и действия Пример 
 
 %ChildFKDecl
 Перечисляет внешние ключи дочерней сущности в отношении, а затем их типы данных. %ChildFKDecl (<old prefix>,<new prefix >, <separator>>,<attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена атрибутов FK и типы данных Пример 
 
 %ChildNK
 Перечисляет неключевые элементы дочерней сущности и выполняет указанные действия с каждым из них. %ChildNK(<separator>,<action>,<prefix>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена неключевых атрибутов и действия Пример 
 
 %ChildNKDecl
 Перечисляет неключевые элементы дочерней сущности в отношении, а затем их типы данных. %ChildNKDecl (<old prefix>,<new prefix>, <separator>,<attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена неключевых атрибутов и типы данных Пример 
 
 %ChildParamDecl
 Перечисляет все атрибуты дочерней сущности в отношении, а затем их типы данных. Это полезно при объявлении параметров хранимых процедур. %ChildParamDecl (<old prefix>,<new prefix>, <separator>,<attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена атрибутов и типы данных Пример 
 
 %ChildFK
 Перечисляет элементы первичного ключа дочерней сущности в отношении и выполняет с каждым указанные действия. %ChildPK(<separator>,<action>, <prefix>) Область видимости 
 RI или Переопределение отношений. Возвращаемое значение 
 Неключевые имена атрибутов и действия. Пример 
 
 %ChildPKDecl
 Перечисляет первичные ключевые элементы дочерней сущности в отношении, а затем их типы данных. %ChildPKDecl (<old prefix>,<new prefix>, <separator>, <attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена атрибутов PK и типы данных Пример 
 
 %Concat
 Добавляет <value 2> в конец <value 1>, результатом является объединенная строка. %Concat(<value1>, <value2>) Область видимости 
 Глобально Возвращаемое значение 
 Строка %CurrentDatabase
 Возвращает имя базы данных, используемой при генерации скрипта (в виде значения вводимого в диалоговом окне Connection <DB>). %CurrentDatabase Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %CurrentFile
 Возвращает имя ERwin файла, из которого был сгенерирован сценарий. %CurrentFile Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %CurrentServer
 Возвращает имя целевого сервера, использованного при генерации скрипта (в виде значения вводимого в диалоговом окне Connection <DB>). %CurrentServer Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %CurrentUser
 Возвращает имя пользователя, сгенерировавшего скрипта (в виде значения вводимого в диалоговом окне Connection <DB>). %CurrentUser Область видимости 
 Глобально Возвращаемое значение 
 Cтрока Пример 
 
 %CustomTriggerDefaultBody
 Вставляет текст из шаблона триггера в триггер в развернутой форме. %CustomTriggerDefaultBody Область видимости 
 Триггер. Возвращаемое значение 
 Содержимое шаблона CustomTriggerDefaultBody. %CustomTriggerDefaultFooter
 Вставляет текст из шаблона нижнего колонтитула в триггер в развернутой форме. %CustomTriggerDefaultFooter Область видимости 
 Триггер. Возвращаемое значение 
 Содержимое шаблона CustomTriggerDefaultFooter. %CustomTriggerDefaultHeader
 Вставляет текст из шаблона заголовка в триггер в развернутой форме. %CustomTriggerDefaultHeader Область видимости 
 Триггер. Возвращаемое значение 
 Содержимое шаблона CustomTriggerDefaultHeader. %DatatypeName
 Возвращает имя типа данных %DatatypeName() Область видимости 
 Глобально Возвращаемое значение 
 Тип данных Пример 
 
 %DatatypeScale
 Для десятичных типов данных, %DatatypeScale возвращает число десятичных знаков (значение после десятичной запятой). %DatatypeScale() Область видимости 
 Глобально Возвращаемое значение 
 Целое Пример 
 
 %DatatypeWidth
 Возвращает ширину поля описанную в типе данных. %DatatypeWidth() Область видимости 
 Глобально Возвращаемое значение 
 Целое Пример 
 
 %Datetime
 Возвращает текущие дату и время. %Datetime Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %DBMS
 Возвращает имя базы данных. %DBMS Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %DBMSDelim
 Возвращает оператор разделитель для выбранной СУБД. %DBMSDelim Область видимости 
 Глобально Возвращаемое значение 
 , или ; или другой разделитель. %Decl
 Объявляет <переменную> и, необязательно, инициализирует ее с помощью <initial value>. Например, если вы использовали оператор %Decl(var1,0), то это значит, что объявляется переменная var1, которая инициализируется значением 0. Возвращаемое значение не генерируется. %Decl(<variable>,<initial value>) Область видимости 
 Глобально Возвращаемое значение 
 Нет Пример 
 
 %DefaultName
 Возвращает имя по умолчанию. %DefaultName Область видимости 
 %ForEachDefault Возвращаемое значение 
 Имя по умолчанию. Пример 
 
 %DefaultValue
 Возвращает значение по умолчанию. %DefaultValue(<default name> или %DefaultValue Область видимости 
 Глобально (при использовании аргумента - <default name>), либо %ForEachDefault (без аргумента). Возвращаемое значение 
 Значение по умолчанию. Пример 
 
 %DomainDatatype
 Возвращает физический тип данных домена. %DomainDatatype(<domain name>) или %DomainDatatype Область видимости 
 Глобально (при использовании аргумента - <domain name>), либо %ForEachDomain. Возвращаемое значение 
 Значение домена по умолчанию. Пример 
 
 %DomainDef
 Возвращает имя, по умолчанию присвоенное домену. %DomainDef(<domain name>) или %DomainDef Область видимости 
 Глобально (при использовании аргумента <domain name>), либо %ForEachDomain. Возвращаемое значение 
 Значение домена по умолчанию. Пример 
 
 %DomainName
 Возвращает имя домена. %DomainName Область видимости 
 %ForEachDomain Возвращаемое значение 
 Имя домена Пример 
 
 %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. Возвращаемое значение 
 название правила проверки. Пример 
 
 %EntityId
 Возвращает идентификатор сущности или таблицы %EntityId (<entity or tablename>) Область видимости 
 RI, Переопределение отношений или Триггер Возвращаемое значение 
 Целое Пример 
 
 %EntityName
 Возвращает имя сущности или таблицы %EntityName (<entity or tablename>) Область видимости 
 RI, Переопределение отношений или Триггер Возвращаемое значение 
 Строка Пример 
 
 %File
 Выполняет программу макроса, заключенного в фигурные скобки и записывает результат в данный файл. Этот макрос предусматривает работу с учетом ограничения Windows 3.х на размер строки в 64 кб. %File (<filename>){<macro code>}Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %Fire
 Определяет, когда запускается триггер. Доступно только для INFORMIX, ORACLE7 и Rdb. %Fire Область видимости 
 Триггер. Возвращаемое значение 
 BEFORE или AFTER Пример 
 
 %ForEachAtt
 Раскрывает макрос для каждого атрибута данной таблицы. %ForEachAtt(<table name>,<separator>) {<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого атрибута данной таблицы. Пример 
 
 %ForEachChildRel
 Раскрывает <relationship code> (код отношений) для каждого отношения в котором триггерная сущность является дочерней. %ForEachChildRel(<separator>) {<relationship code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого отношения. Пример 
 
 %ForEachDefault
 Раскрывает макрос для всех атрибутов, имеющих default значения. %ForEachDefault (<separator>) {<macro code>}Область видимости 
 Глобально Возвращаемое значение 
 Результат <macro code> для всех атрибутов имеющих default значения. Пример 
 
 %ForEachDomain
 Раскрывает макрос для всех доменов, которые реализованы как пользовательские типы данных. %ForEachDomain(<separator>){<macro code>}Область видимости 
 Глобально Возвращаемое значение 
 Результат <macro code> Пример 
 
 %ForEachEntity
 Раскрывает макрос для всех сущностей текущей предметной области (subject area). %ForEachEntity(<separator>) {<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждой сущности. Пример 
 
 %ForEachFKAtt
 Раскрывает макрос для каждого атрибута внешнего ключа. %ForEachFKAtt(<separator>){<macro code>}Область видимости 
 RI или Переопределение отношений. Возвращаемое значение 
 Результат <macro code> для каждого атрибута FK. Пример 
 
 %ForEachIndex
 Раскрывает макрос для всех индексов в текущей предметной области. <table> используется по умолчанию для таблицы в текущей области видимости; может использоваться для присвоения имени другой таблице (%Parent, MOVIE_COPY). <type> фильтрует тип индекса (AK, IE, IF, PK, AK1, IE2 и т.д.). По умолчанию для всех. %ForEachIndex ([<table>],[<type>],[<name>],[<separator>]){<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого индекса Пример 
 
 %ForEachIndexMem
 Раскрывает макрос для всех аттрибутов, входящих в индексы текущей предметной области. <sequence> может использоваться для ввода номера, присвоенного определенному члену индекса. По умолчанию для всех членов. %ForEachIndexMem ([<sequence>],[<separator>]) {<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого члена индекса. Пример 
 
 %ForEachKey
 Раскрывает макрос для всех альтернативных ключей и неуникальных индексов (IE) в текущей предметной области. %ForEachKey ([<table>],[<type>],[<separator>]) {<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого ключа. Пример 
 
 %ForEachKeyMem
 Раскрывает макрос для всех членов ключа. %ForEachKeyMem ([<sequence>],[<separator>]) {<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого члена индекса. Пример 
 
 %ForEachParentRel
 Раскрывает <relationship code> для каждого отношения, где сущность, для которой создаётся триггер, является родительской. %ForEachParentRel(<separator>){<relationship code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого отношения. Пример 
 
 %ForEachValidValue
 Раскрывает макрос для всех допустимых значений текущего правила (validation). %ForEachValidValue(<separator>) {<macro code>}Область видимости 
 Триггер., %ForEachValidation Возвращаемое значение 
 Результат <macro code> для каждого допустимого значения. Пример 
 
 %ForEachValidation
 Раскрывает макрос для всех правил. %ForEachValidation(<separator>){<macro code>}Область видимости 
 Триггер. Возвращаемое значение 
 Результат <macro code> для каждого правила. Пример 
 
 %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. Пример 
 
 %Include
 Позволяет вам включить текст макроса при работе с несколькими файлами или шаблонами триггеров. %Include ("<path name>")%Include (<trigger template name>) Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %IndexName
 Возвращает имя индекса. %IndexName Область видимости 
 Триггер, %ForEachIndex, %ForEachIndexMem Возвращаемое значение 
 Строка Пример 
 
 %IndexType
 Возвращает тип индекса. %IndexType Область видимости 
 Триггер., %ForEachIndex, %ForEachIndexMem Возвращаемое значение 
 FK, PK, AK, IE1 и т.д. Пример 
 
 %JoinFKPK
 Позволяет произвести соединение по внешнему ключу дочерней сущности и первичному ключу родительской сущности исходя из реляционной связи (Join между FK дочерней и PK родительской сущностей). %JoinFKPK ([<child table>, <parent table>, <comparison op>,<separator>) Область видимости 
 RI или Переопределение отношений, оператор WHERE или JOIN Возвращаемое значение 
 Программа, поддерживаемая сравнением значений PK и FK в отношении. Пример 
 
 %JoinPKPK
 Позволяет произвести соединение по первичным ключам двух сущностей. %JoinPKPK (<table>, <correlation>, <comparison op>,<separator>) Область видимости 
 RI, Переопределение отношений, Триггер, условный оператор поиска WHERE Возвращаемое значение 
 Текст, производящий сравнение значений PK из двух таблиц. Пример 
 
 %KeyName
 Возвращает имя ключа. %KeyName Область видимости 
 Триггер., %ForEachKey, % ForEachKeyMem Возвращаемое значение 
 Строка Пример 
 
 %Len
 Возвращает длину <macro code>. %Len(<macro code>) Область видимости 
 Глобально Возвращаемое значение 
 Целое Пример 
 
 %Lower
 Преобразует результат <macro code> в нижний регистр. %Lower (<macro code>} Область видимости 
 Глобально Возвращаемое значение 
 Строка в нижнем регистре. Пример 
 
 %Max
 Сравнивает <value1> и <value2> и возвращает большее. %Max(<value1>,<value2>) Область видимости 
 Глобально Возвращаемое значение 
 Большее значение из сравниваемых. Пример 
 
 %Min
 Сравнивает <value1> и <value2> и возвращает меньшее. %Min(<value1>,<value2>) Область видимости 
 Глобально Возвращаемое значение 
 Меньшее значение из сравниваемых Пример 
 
 %NK
 Перечисляет все неключевые атрибуты триггерной сущности и выполняет определенные действия с каждым. %NK (<separator>,<action>,<prefix>) Область видимости 
 Триггер. Возвращаемое значение 
 Атрибут и действие Пример 
 
 %NKDecl
 Перечисляет неключевые атрибуты триггерной сущности, а затем их типы данных. %NKDecl(<old prefix>,<new prefix>,<separator>,<attribute/type separator>) Область видимости 
 Триггер. Возвращаемое значение 
 Имена и типы данных атрибутов Пример 
 
 %Not
 В булевом выражении, определяемом в <macro code>, %Not осуществляет "логическое НЕ". Позволяет комбинировать булевы выражения для создания более сложных выражений. %Not (<macro code>) Область видимости 
 Глобально, %If Возвращаемое значение 
 Результат макроса. Пример 
 
 %NotnullFK
 Сравнивает внешний ключ дочерней сущности <child table> из отношения с <null expression>. Этот макрос выполняется, только если отношение не определяющее и допустимы null значения. %NotnullFK(<child table>, <not null expression>,<prefix>,<separator>) Область видимости 
 RI или Переопределение отношений, оператор WHERE Возвращаемое значение 
 NULL выражение для каждого FK, допускающего нулевые значения. Пример 
 
 %Or
 В булевых выражениях, определяемых в <macro code1> и <macro code2>, %Or осуществляет "логическое ИЛИ". Позволяет комбинировать булевы выражения для создания более сложных выражений. Например, %If{%Or(%AttisFK,%AttIsRolenamed)...} позволяет выполнять дополнительные действия, если данный атрибут является внешним ключом или имеет ролевое имя. Макрос выполняется, если любой из элементов имеет значение "TRUE". %Or (<macro code1>,<macro code2>) Область видимости 
 Глобально, %If Возвращаемое значение 
 TRUE/FALSE Пример 
 
 %ParamDecl
 Перечисляет все атрибуты триггерной сущности, а затем их типы данных. %ParamDecl(<old prefix>,<new prefix>,<separator>,<attribute/type separator>) Область видимости 
 Триггер. Возвращаемое значение 
 Атрибуты и типы данных. Пример 
 
 %ParamPass
 Присваивает значения параметрам процедур, определенным в <old prefix> и/или в <new prefix>, для всех атрибутов триггерной сущности. Доступен только для Ingres. %ParamDecl(<old prefix>,<new prefix>,<param/value separator>,<param separator>) Область видимости 
 Триггер. Возвращаемое значение 
 Список параметров для Ingres. Пример 
 
 %Parent
 Возвращает физическое имя таблицы родительской сущности из реляционной связи. %Parent Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Строка Пример 
 
 %ParentAtt
 Раскрывает любой макрос атрибутов (например, %AttFieldName, %AttDatatype) для первичного родительского ключевого атрибута, от которого мигрировал текущий атрибут. %ParentAtt(<attribute macro>) Область видимости 
 %ForEachAtt, %ForEachFKAtt Возвращаемое значение 
 Результат <attribute macro> Пример 
 
 %ParentAtts
 Перечисляет все атрибуты родительской сущности в отношении, и выполняет с каждым указанные действия. %ParentAtts(<separator>,<action>,<prefix>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Атрибуты и действия Пример 
 
 %ParentNK
 Перечисляет неключевые атрибуты родительской сущности в отношении и выполняет с каждым указанные действия. %ParentNK(<separator>,<action>,<prefix>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Атрибуты и действия Пример 
 
 %ParentNKDecl
 Перечисляет неключевые атрибуты родительской сущности в отношении, а затем - типы данных. %ParentNKDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Атрибуты и типы данных FK. Пример 
 
 %ParentParamDecl
 Перечисляет атрибуты родительской сущности в отношении, а затем - их типы данных. %ParentParamDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Атрибуты и типы данных. Пример 
 
 %ParentPK
 Перечисляет элементы первичного ключа родительской сущности в отношении и выполняет с ними указанные действия. %ParentPK(<separator>,<action>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Атрибуты первичных ключей и действия. Пример 
 
 %ParentPKDecl
 Перечисляет элементы первичного ключа родительской сущности в отношении, а затем - их типы данных. %ParentPKDecl (<old prefix>,<new prefix>,<separator>,<attribute/type separator>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имена атрибутов первичных ключей и типы данных. Пример 
 
 %PhysRelName
 Возвращает физическое имя отношения. %PhysRelName Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Строка Пример 
 
 %PK
 Перечисляет элементы первичного ключа триггерной сущности и выполняет с ними указанные действия. %PK(<separator>,<action>,<prefix>) Область видимости 
 Триггер. Возвращаемое значение 
 Первичные ключевые атрибуты и действия. Пример 
 
 %PKDecl
 Перечисляет элементы первичного ключа сущности, а затем - их типы данных. %PKDecl (<old prefix>,<new prefix>,<separator>>,<attribute/type separator>)) Область видимости 
 Триггер. Возвращаемое значение 
 Имена первичных ключевых атрибутов и типы данных. Пример 
 
 %RefClause
 Создает описание Reference, исходя из информации OLD и NEW, добавленной в Редакторе Триггерного Объекта. Доступен только для INFORMIX, Ingres, ORACLE7 и Rdb. %RefClause Область видимости 
 Триггер. Возвращаемое значение 
 Оператор ссылки Пример 
 
 %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 Пример 
 
 %RelTemplate
 Раскрывает шаблон, присоединенный к текущему отношению. Если никакой макрос не присвоен, раскрывается шаблон ссылочной целостности диаграммы по умолчанию. %RelTemplate Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Раскрывает фрагмент программы отношения в соответствии с типом триггера. %RelType
 Возвращает тип отношения. Допустимые значения типа отношения и их определения включают: RT_ID (определено), RT_NI (не определено), RT_SC (субтип) или RT_MM (многие-ко-многим). %RelType Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 RT_ID, RT_NI, RT_SC или RT_MM Пример 
 
 %Scope
 Возвращает определение того, как выполняется триггер. Доступен только для ORACLE7. %Scope Область видимости 
 Триггер. Возвращаемое значение 
 FOR EACH ROW или FOR EACH TABLE Пример 
 
 %SetFK
 Перечисляет внешние ключевые элементы дочерней сущности в отношении и присваивает каждому члену указанное значение. %SetFK (<child table>,<value>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имя и значение атрибута внешнего ключа Пример 
 
 %SetPK
 Перечисляет первичные ключевые элементы указанной таблицы и присваивает каждому члену указанное значение. %SetPK(<table>,<value>) Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Имя и значение атрибута первичного ключа. Пример 
 
 %Substitute
 Заменяет строку <pattern> в строке <value> строкой <substitute>. %Substitute(<value>,<pattern>,<substitute>) Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %Substr
 Возвращает подстроку при раскрытии данного <macro code>. <length> (длина) необязательна. %Substr(<macro code>,<initial pos>,<length>) Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %Switch
 Сравнивает аргумент с указанной альтернативой. ERwin раскрывает макрос в соответствии с совпавшей альтернативой. Если ни одного совпадения не происходит, ERwin выполняет макрос по умолчанию. %Switch (<argument>) {%Choose(<choice 1>) {<macro code 1>} %Choose(<choice 2>) {<macro code2>} <etc...> %Default {<default macro code>}}Область видимости 
 Глобально Возвращаемое значение 
 Значение макроса Пример 
 
 %TableName
 Возвращает физическое имя таблицы триггерного объекта. %TableName Область видимости 
 Триггер. Возвращаемое значение 
 Имя таблицы Пример 
 
 %TemplateName
 Возвращает имя шаблона триггера, хранимой процедуры или сценария. %TemplateName Область видимости 
 Триггер. Возвращаемое значение 
 Имя шаблона Пример 
 
 %TriggerName
 Возвращает физическое имя триггера. %TriggerName Область видимости 
 Триггер. Возвращаемое значение 
 Имя триггера Пример 
 
 %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 Пример 
 
 %UpdateChildFK
 Перечисляет внешние ключевые элементы дочерней сущности в отношении и выполняет обновление с каждым членом. Доступно только для ORACLE7, SQL Server и SYBASE. %UpdateChildFK() Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Значение и действие внешнего ключа Пример 
 
 %UpdateParentPK
 Перечисляет первичные ключевые элементы родительской сущности в отношении и выполняет обновление каждого члена. Доступно только для ORACLE7, SQL Server и SYBASE. %UpdateParentPK() Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Значение и действие первичного ключа Пример 
 
 %UpdatePK
 Перечисляет первичные ключевые элементы триггерной сущности и выполняет обновление каждого члена. Доступно только для ORACLE7, SQL Server и SYBASE. %UpdatePK() Область видимости 
 Триггер. Возвращаемое значение 
 Значение и действие первичного ключа Пример 
 
 %Upper
 Преобразует раскрытый <macro code> в верхний регистр. %Upper (<macro code>) Область видимости 
 Глобально Возвращаемое значение 
 Строка Пример 
 
 %ValidationHasValidValues
 Булево выражение, позволяющее вам определять, имеет ли текущее допущение корректные значения. % ValidationHasValidValues(<validation name>) Область видимости 
 Глобально (с аргументом <validation name>) или %ForEachValidation, %If Возвращаемое значение 
 TRUE/FALSE %ValidationName
 Возвращает название правила проверки допустимости. %ValidationName Область видимости 
 %ForEachValidation Возвращаемое значение 
 Имя правила проверки допустимости Пример 
 
 %ValidationRule
 Возвращает правило проверки со стороны сервера. %ValidationRule(<validation name>} или %ValidationRule Область видимости 
 Глобально (с аргументом <validation name>) или %ForEachValidation Возвращаемое значение 
 Строка правила проверки допустимости Пример 
 
 %ValidValue
 Возвращает допустимые значения данных %ValidValue Область видимости 
 %ForEachValidValue Возвращаемое значение 
 Строка Пример 
 
 %ValidValueDef
 Возвращает определение допустимого значения. %ValidValueDef Область видимости 
 %ForEachValidValue Возвращаемое значение 
 Строка Пример 
 
 %VerbPhrase
 Возвращает сообщение об отношении. %VerbPhrase Область видимости 
 RI или Переопределение отношений Возвращаемое значение 
 Сообщение об отношении Пример 
 
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||