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 | 声明事务隔离级别的生效范围,默认为空。
|
| READ ONLY | READ WRITE | 指定事务的读写模式。 |
| READ UNCOMMITED | 指定事务隔离级别为读未提交。 说明 当前版本暂不支持将事务隔离级别设置为读未提交。 |
| READ COMMITED | 指定事务隔离级别为读已提交。 |
| REPEATABLE READ | 指定事务隔离级别为可重复读。 |
| SERIALIZABLE | 指定事务隔离级别为可串行化。 |
示例
-
设置当前会话中下个事务的事务隔离级别为读已提交。
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; -
设置当前会话的事务隔离级别为可重复读。
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;