-----  Transaction: Start, Savepoint, Commit or Rollback   -----

A transaction is initiated by the "start transaction" command.  During a tran-
saction,  changes  made  to  a database are not permanently recorded until the
transaction is ended by either committing the changes permanently  or  cancel-
ling them.  The effects of changes made while a transaction is in progress may
be seen like those of normal commands, but the option exists of reversing them
if so desired.

Syntax:

     |start| |transaction|;
     |run  | |work       |

This starts a transaction.

Syntax:

     savepoint SAVEPOINT;

This sets a save point in a transaction.  The SAVEPOINT is a  string  starting
with a letter.  A transaction must be in progress.

The "commit transaction" command makes permanent all changes made to the data-
base  during  the  duration  of a transaction, and ends the transaction.  This
command is only valid if a transaction is in progress.

Syntax:

     commit  |transaction|;
             |work       |

The "rollback transaction" command undoes the effects that  inserting,  updat-
ing, or deleting commands may have on the database during the current transac-
tion.  The database remains in the state it was in before the transaction  be-
gan.  This command is only valid if a transaction is in progress.

Syntax:

     |rollback| |transaction| [to SAVEPOINT];
     |cancel  | |work       |

If no SAVEPOINT is specified the entire transaction  is  rolled  back.   If  a
SAVEPOINT is specified the transaction is rolled back to the save point.

See  also  the   system   variables   MSTRANSCOMMENT,   MSTRANSTABLELOCK   and
MSTRANSWARMPROTECT.
