跳到主要内容

SET TRANSACTION

描述

设置事务隔离级别。

seekdb 支持读已提交、可重复读两种隔离级别。默认的隔离级别为读已提交。

  • 不能在事务执行过程中设置隔离级别,否则会报错。

    ERROR:OBE-01453: SET TRANSACTION must be first statement of transaction

  • 在开启可串行化隔离级别时需要确保全局时钟服务(Global Timestamp Service,GTS)是打开的。

  • Session 需要维护 Session 级别的事务隔离级别,在开启事务时获取 Session 级别的事务隔离级别,该隔离级别可以被事务级别的隔离级别覆盖。

语法

SET [GLOBAL | SESSION | LOCAL] TRANSACTION trans_opt;

trans_opt:
transaction_access_mode
| isolation_level
| transaction_access_mode, isolation_level
| isolation_level, transaction_access_mode

transaction_access_mode:
[READ ONLY | READ WRITE]

isolation_level:
ISOLATION LEVEL {
READ UNCOMMITED
| READ COMMITED
| REPEATABLE READ
| SERIALIZABLE
}

参数解释

参数描述
GLOBAL | SESSION | LOCAL声明事务隔离级别的生效范围,默认为空。
  • GLOBAL:适用于所有后续会话,当前会话不受影响。
  • SESSION | LOCAL:适用于当前会话中执行的所有后续事务,不影响当前正在进行的事务,如果在事务之间执行,该语句将覆盖任何先前设置命名特征的下一个事务值的语句。
  • 无声明:适用于会话中执行的下一个单个事务,后续事务恢复使用命名特征的会话值。
READ ONLY | READ WRITE指定事务的读写模式。
READ UNCOMMITED指定事务隔离级别为读未提交。
说明 当前版本暂不支持将事务隔离级别设置为读未提交。
READ COMMITED指定事务隔离级别为读已提交。
REPEATABLE READ指定事务隔离级别为可重复读。
SERIALIZABLE指定事务隔离级别为可串行化。

示例

  • 设置当前会话中下个事务的事务隔离级别为读已提交。

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
  • 设置当前会话的事务隔离级别为可重复读。

    SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;