The /[NO]DEFAULT_TRANSACTIONS qualifier controls whether or not
the RDML preprocessor will generate code to support automatic
database attachment and automatic transactions by default.
Format:
/DEFAULT_TRANSACTIONS (Default)
/NODEFAULT_TRANSACTIONS (Recommended)
When you use the /DEFAULT_TRANSACTIONS qualifier, RDML allows you
to issue a query, without explicitly issuing a READY statement or
START_TRANSACTION statement first. If you do not issue these
statements explicitly, RDML will attach to the database and
start a READ_ONLY transaction for you when it encounters the
first DML statement. Furthermore, RDML allows you to detach
from a database without first completing (committing or rolling
back) any transaction that is attached to the database you are
finishing. RDML will commit any outstanding transaction for you.
The /DEFAULT_TRANSCTIONS qualifier causes the RDML preprocessor
to generate additional (often unnecessary) code that may incur
a significant amount of overhead because RDML must check the
state of the database and transactions as each DML statement is
processed.
The /NODEFAULT_TRANSACTIONS qualifier eliminates this overhead
by requiring you to explicitly READY a database and begin and end
transactions. When you use the /NODEFAULT_TRANSACTIONS qualifier
RDML does not check the state of the database and transactions as
each RDML statement is processed. In fact, if you do not close a
transaction prior to issuing a FINISH statement for the database
with which the transaction is associated, RDML will issue the
error message: %RDB-F-OPEN_TRANS.
Rdb recommends that you always use the
/NODEFAULT_TRANSACTIONS qualifier to reduce overhead, maximize
performance and enforce good programming practices. However,
the default for this qualifier is /DEFAULT_TRANSACTIONS, as this
causes the behavior that RDML has exhibited prior to Oracle Rdb
V3.0.