SET TRANSACTION

    设置当前事务特性需要在事务中执行(即执行SET TRANSACTION之前需要执行START TRANSACTION或者BEGIN),否则设置不生效。设置当前数据库全局会话(GLOBAL)的事务特性在重新连接后生效。

    设置事务的隔离级别、读写模式。

    • LOCAL

      声明该命令只在当前事务中有效。

    • SESSION

      SET SESSION TRANSACTION语句需要在B兼容模式下,设置GUC参数b_format_behavior_compat_options为set_session_transaction后生效。其他情形使用SET SESSION CHARACTERISTICS语句。

      取值范围:字符串,要符合标识符的命名规范。

    • 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。

      取值范围:

      • READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。
      • REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。
      • SERIALIZABLE:openGauss目前功能上不支持此隔离级别,等价于REPEATABLE READ。
    • READ WRITE | READ ONLY

    1. openGauss=# START TRANSACTION;
    2. --设置当前会话的事务隔离级别、读写模式。
    3. --在sql_compatibility = 'B'场景下,b_format_behavior_compat_options设置为set_session_transaction
    4. openGauss=# SET SESSION TRANSACTION READ ONLY;
    5. --设置当前数据库全局会话的事务隔离级别、读写模式(sql_compatibility = 'B'场景下)。