Using Extended Attributes During Generation

Extended attributes can be taken into account during generation. Each extended attribute value can be used as a variable that can be referenced in the scripts defined in the Script category.

Some DBMSs include predefined extended attributes. For example in PostgreSQL, domains include default extended attributes used for the creation of user-defined data types.



You can create as many extended attributes as you need, for each DBMS supported object.

Note: PowerDesigner variable names are case sensitive. The variable name must be an exact match of the extended attribute name.

Example

For example, in DB2 UDB 7 OS/390, the extended attribute WhereNotNull allows you to add a clause enforcing the uniqueness of index names if they are not null.

In the Create index order, WhereNotNull is evaluated as follows:

create [%INDEXTYPE% ][%UNIQUE% [%WhereNotNull%?where not null ]]index [%QUALIFIER%]%INDEX% on [%TABLQUALIFIER%]%TABLE% (
			%CIDXLIST%
)
[%OPTIONS%]

If the index name is unique, and if you set the type of the WhereNotNull extended attribute to True, the "where not null" clause is inserted in the script.

In the SqlListQuery item:

{OWNER, TABLE, INDEX, INDEXTYPE, UNIQUE, INDEXKEY, CLUSTER, WhereNotNull}

select 
 tbcreator,
 tbname,
 name,
 case indextype when '2' then 'type 2' else 'type 1' end,
 case uniquerule when 'D' then '' else 'unique' end, 
 case uniquerule when 'P' then 'primary' when 'U' then 'unique' else '' end, 
 case clustering when 'Y' then 'cluster' else '' end,
 case uniquerule when 'N' then 'TRUE' else 'FALSE' end
from
 sysibm.sysindexes 
where 1=1
[  and tbname=%.q:TABLE%]
[  and tbcreator=%.q:OWNER%]
[  and dbname=%.q:CATALOG%]
order by
 1 ,2 ,3