You need the Oracle Rdb DEFINE privilege for the database to define
a relation. If you are defining a constraint as part of the
relation definition, you must also have the Oracle Rdb DEFINE
privilege for the relation referenced by the constraint.
You can copy a shareable relation definition from the data
dictionary into the database using the FROM PATHNAME clause of
the DEFINE RELATION statement.
When the DEFINE RELATION statement executes, Oracle Rdb:
o Adds the relation definition to the physical database. If you
have invoked the database with the PATHNAME specification, the
definition is also added to the data dictionary.
o Creates a default access control list (ACL) for the relation.
There are several ways to use the DEFINE RELATION statement to
specify the attributes of fields:
o When you define a relation, you can simply list the names of
fields defined globally for the database, or you can define
fields explicitly.
o You can also base the local field definitions on existing
global definitions, but give them local attributes. For
example, when you use the BASED ON qualifier, the field takes
the local name you give it in the DEFINE RELATION statement,
but it derives its other attributes from the global field on
which it is based.
o You can also use the DATATRIEVE clauses both globally and
locally. When you use the DATATRIEVE clauses within the
DEFINE RELATION statement, they override the DATATRIEVE
characteristics specified for the global definition.
You must execute this statement in a read/write transaction. If
you issue this statement when there is no active transaction,
Oracle Rdb starts a read/write transaction implicitly.
Other users are allowed to be attached to the database when you
issue the DEFINE RELATION statement.
You can have a maximum of 2000 fields in a relation.
If you define a relation using an Oracle CDD/Repository path name, the
relation name must match the record name. For example, the following
statement contains an error. (The statement can be processed, but
problems will occur later.)
RDO> DEFINE RELATION AAAA FROM PATHNAME 'CDD$TOP.TEST.XXXX'.
The correct form of the statement is as follows:
RDO> DEFINE RELATION AAAA FROM PATHNAME 'CDD$TOP.TEST.AAAA'.