When you use the SQL SET TRANSACTION . . . RESERVING statement
to lock a set of tables for an Oracle Rdb operation, you normally
exclude from the transaction all the tables not listed in the
RESERVING clause. However, Oracle Rdb accesses and updates system
tables as necessary, no matter which tables you have locked with
the SQL SET TRANSACTION statement.
When your transaction updates database metadata, Oracle Rdb
reserves the system tables involved in the update in the
EXCLUSIVE share mode. Other users are unable to perform data
definition operations on these tables until you complete your
transaction. For example:
o When you refer to a domain (global field) in an update
transaction that changes data definitions, Oracle Rdb locks
an index for the system table, RDB$RELATION_FIELDS. No other
users can refer to the same domain until you commit your
transaction.
o When you change a system table or domain definition, Oracle
Rdb locks an index in the system table, RDB$FIELD_VERSIONS. No
other users can change table or global field definitions until
you commit your transaction.
o When you change a table definition, Oracle Rdb locks an index
in the system table, RDB$RELATION_FIELDS. No other users can
change tables in the same index node until you commit your
transaction.