更新时间:2024-06-29 GMT+08:00

ALTER SESSION

功能描述

ALTER SESSION命令用于定义或修改那些对当前会话有影响的条件或参数。修改后的会话参数会一直保持,直到断开当前会话。

注意事项

  • 如果执行SET TRANSACTION之前没有执行START TRANSACTION,则事务立即结束,命令无法显示效果。
  • 可以用START TRANSACTION里面声明所需要的transaction_mode(s)的方法来避免使用SET TRANSACTION。

语法格式

  • 设置会话的事务参数。
    1
    2
    ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION
        { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED } | { READ ONLY  | READ WRITE } } [, ...] ;
    
  • 设置会话的其他运行时参数。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    ALTER SESSION SET 
        {{config_parameter { { TO  | =  }  { value | DEFAULT }
          | FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT }
          | TIME ZONE time_zone
          | SCHEMA schema
          | NAMES encoding_name
          | ROLE role_name PASSWORD 'password'
          | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT }
          | XML OPTION { DOCUMENT | CONTENT }
        } ;
    

参数说明

  • SESSION

    声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。

    如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。

  • config_parameter

    可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。

    部分通过SHOW ALL查看的参数不能通过SET设置。如max_datanodes。

  • value

    config_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。

  • TIME ZONE timezone

    用于指定当前会话的本地时区。

    取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。

  • CURRENT_SCHEMA

    CURRENT_SCHEMA用于指定当前的模式。

    取值范围:已存在模式名称。

  • SCHEMA schema

    同CURRENT_SCHEMA。此处的schema是个字符串。

    例如:set schema 'public';

  • NAMES encoding_name

    用于设置客户端的字符编码。等价于set client_encoding to encoding_name。

    取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。

  • XML OPTION option

    用于设置XML的解析方式。

    取值范围:CONTENT(缺省),DOCUMENT。

示例

创建模式ds:

1
CREATE SCHEMA ds;

设置模式搜索路径:

1
SET SEARCH_PATH TO ds, public;

设置日期时间风格为传统的POSTGRES风格(日在月前):

1
SET DATESTYLE TO postgres, dmy;

设置当前会话的字符编码为UTF8:

1
ALTER SESSION SET NAMES 'UTF8';

设置时区为加州伯克利:

1
SET TIME ZONE 'PST8PDT';

设置时区为意大利:

1
SET TIME ZONE 'Europe/Rome';

设置当前模式:

1
ALTER SESSION SET CURRENT_SCHEMA TO tpcds;

设置XML OPTION为DOCUMENT:

1
ALTER SESSION SET XML OPTION DOCUMENT;

创建角色joe,并设置会话的角色为joe:

1
2
CREATE ROLE joe WITH PASSWORD '{password}';
ALTER SESSION SET SESSION AUTHORIZATION joe PASSWORD '{password}';

切换到默认用户:

1
ALTER SESSION SET SESSION AUTHORIZATION default;

相关链接

SET