Updated on 2025-07-22 GMT+08:00

START TRANSACTION

Function

START TRANSACTION starts a transaction. If the isolation level, read/write mode, or deferrable mode is specified, a new transaction will have those characteristics. You can also specify them using SET TRANSACTION.

Precautions

None

Syntax

Format 1: START TRANSACTION

1
2
3
4
5
6
7
START TRANSACTION
  [ 
    { 
       ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
       | { READ WRITE | READ ONLY }
     } [, ...] 
  ];

Format 2: BEGIN

1
2
3
4
5
6
7
BEGIN [ WORK | TRANSACTION ]
  [ 
    { 
       ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
       | { READ WRITE | READ ONLY }
      } [, ...] 
  ];

Parameter Description

Table 1 START TRANSACTION parameters

Parameter

Description

Value Range

WORK | TRANSACTIO

Optional keyword in the BEGIN format, which does not affect the operation.

-

ISOLATION LEVEL

Transaction isolation level. This parameter determines the data that a transaction can view if other concurrent transactions exist.

NOTE:

The isolation level of a transaction cannot be reset after the first clause (INSERT, DELETE, UPDATE, FETCH, COPY) for modifying data is executed in the transaction.

  • READ COMMITTED: Only committed data is read. The default value is READ COMMITTED.
  • READ UNCOMMITTED: GaussDB(DWS) does not support READ UNCOMMITTED. If READ UNCOMMITTED is set, READ COMMITTED is executed instead.
  • REPEATABLE READ: Only the data committed before transaction start is read. Uncommitted data or data committed in other concurrent transactions cannot be read.
  • SERIALIZABLE: GaussDB(DWS) does not support SERIALIZABLE. If SERIALIZABLE is set, REPEATABLE READ is executed instead.

READ WRITE | READ ONLY

Transaction access mode.

Read-write mode or read-only mode.

Examples

  • Start a transaction in default mode.
    1
    2
    3
    START TRANSACTION;
    SELECT * FROM tpcds.reason;
    END;
    
  • Start a transaction with the isolation level being READ COMMITTED and the access mode being READ WRITE:
    1
    2
    3
    START TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE;
    SELECT * FROM tpcds.reason;
    COMMIT;