BEGIN
Starts a transaction block.
Synopsis
BEGIN [ WORK | TRANSACTION ] [ <transaction_mode> [, ...] ]
where transaction_mode is one of:
ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
Description
BEGIN initiates a transaction block, that is, all statements after a BEGIN command will be run in a single transaction until an explicit COMMIT or ROLLBACK is given.
Without BEGIN, Greengage DB runs transactions in autocommit mode, that is, each statement is run in its own transaction, and a commit is implicitly performed at the end of the statement (if execution was successful, otherwise a rollback is done).
Statements are run more quickly in a transaction block, because transaction start/commit requires significant CPU and disk activity. Execution of multiple statements inside a transaction is also useful to ensure consistency when making several related changes: other sessions will be unable to see the intermediate states wherein not all the related updates have been done.
If the isolation level, read/write mode, or deferrable mode is specified, the new transaction has those characteristics, as if SET TRANSACTION was run.
Parameters
| Parameter | Description |
|---|---|
WORK |
Optional keywords. They have no effect |
SERIALIZABLE |
The SQL standard defines four transaction isolation levels:
|
Notes
START TRANSACTION has the same functionality as BEGIN.
Use COMMIT or ROLLBACK to terminate a transaction block.
Issuing BEGIN when already inside a transaction block will provoke a warning message.
The state of the transaction is not affected.
To nest transactions within a transaction block, use savepoints (see SAVEPOINT).
Examples
Begin a transaction block:
BEGIN;
Begin a transaction block with the REPEATABLE READ isolation level:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Compatibility
BEGIN is a Greengage DB language extension.
It is equivalent to the SQL-standard command START TRANSACTION.
The DEFERRABLE transaction mode is a Greengage DB language extension.
Incidentally, the BEGIN keyword is used for a different purpose in embedded SQL. You are advised to be careful about the transaction semantics when porting database applications.