RDOHELP72.HLB  —  START_TRANSACTION, Multiple Database Access
    You can use different share and access modes in the START_
    TRANSACTION statement when you intend to access more than
    one database in your application. To use this feature, you
    must specify a database handle for each database you invoke.
    For example, your application can access any relation in one
    database using the read-only transaction to check certain data
    values while it updates relations in another database using the
    read/write transaction.

    Note that any START_TRANSACTION statements already contained in
    your application programs will continue to execute normally.

    Because the read-only transaction uses a snapshot version of the
    database, you might encounter inconsistencies in the data your
    application retrieves. Therefore, if your program accesses one
    database using read-only, another transaction using read/write
    might update a relation in the database file itself. The data
    your program reads from the snapshot file represents a before-
    image of the record the other program is updating. If you require
    absolute data consistency for certain update applications, you
    should specify the read/write transaction mode for both databases
    and permit others to read one of the databases by including the
    SHARED READ reserving option. In this way, you maintain data
    consistency during updates while permitting concurrent data
    retrieval from the database your program reads.

    Before you can use the multiple database feature of the START_
    TRANSACTION statement, you must issue an INVOKE statement
    for each database you intend to access. The INVOKE statement
    must include a database handle. For example, the following
    INVOKE statements identify two databases required by an update
    application.

    &RDB&  INVOKE DATABASE DB1 = FILENAME 'PERSONAL$DISK:PERSONNEL'
    &RDB&  INVOKE DATABASE DB2 = FILENAME 'PERSONAL$DISK:BENEFITS'

    Because the program only needs to read the EMPLOYEES relation of
    the PERSONNEL database (DB1), but needs to change values in two
    relations, TUITION and STATUS of the BENEFITS database (DB2),
    the update program might contain the following START_TRANSACTION
    statement:

    &RDB&  START_TRANSACTION
    &RDB&   ON DB1 USING
    &RDB&    (READ_ONLY
    &RDB&       RESERVING EMPLOYEES FOR SHARED READ) AND
    &RDB&   ON DB2 USING
    &RDB&    (READ_WRITE
    &RDB&       RESERVING TUITION FOR SHARED WRITE
    &RDB&                 STATUS  FOR SHARED WRITE)

    If you refer to more than one Oracle Rdb database for actual update
    operations within one transaction, use a distributed transaction.

    For complete information on distributed transactions, see the
    Oracle Rdb Guide to Distributed Transactions.
Close Help