Distributed Transaction Management (DTM)

A distributed, or external, transaction is managed by an external
transaction coordinator, such as XA Transaction Manager (TM).

In versions
of Adaptive Server earlier than 15.0.3, user applications determined whether
an external transaction was rolled back while executing DML commands.
If Adaptive Server implicitly aborted an external transaction without
the application’s knowledge, DML commands that would normally run
inside this transaction might instead be executed inside an implicit transaction
started by Adaptive Server. This behavior could result in inconsistent
business data.

In
versions 15.0.3 and later, Adaptive Server does not allow any DML commands
to be executed on the connection attached to the external transaction
until the transaction manager sends a detach request. The detach request
indicates the end of a batch of commands intended for the external transaction.

In versions 15.0.3 and later, Adaptive Serve automatically
prevents SQL commands that are intended to execute inside a distributed
transaction from executing outside it. The user application no longer
has to check the global variable before every command; when a transaction
is implicitly aborted, an error message (3953) appears, saying “Cannot
execute the command because the external transaction has been rolled
back.” This message disappears when a detach transaction command
is issued.