VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

SET

SET - 更改运行时参数说明

语法格式

SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }

说明

SET 命令更改运行时配置参数说明。(但有些需要超级用户权限才能更改,其他服务器或会话启动后无法更改。) SET仅影响当前会话使用的值。

如果在稍后中止的事务中发出 SET (或等效 SET SESSION ),则在回滚事务时SET命令的效果将消失。一旦提交了周围的事务,效果将持续到会话结束,除非被另一个SET 覆盖。

SET LOCAL 的影响仅持续到当前 Transaction结束,无论是否已实施。一个特例是在单个事务中 SET 后跟 SET LOCAL : SET LOCAL 值将一直显示到事务结束,但之后(如果事务已提交) SET 值将生效。

通过回滚到早于该命令的保存点,也会取消 SET 或 SET LOCAL 的效果。

如果在具有相同变量 SET 选项的函数中使用 SET LOCAL (参见 CREATE FUNCTION),则 SET LOCAL命令的效果在函数退出时消失;也就是说,无论如何都会恢复调用函数时生效的值。这允许SET LOCAL 用于动态或重复更改函数内的参数说明,同时仍然可以方便地使用 SET选项来保存和恢复调用者的值。但是,常规 SET 命令会覆盖任何周围函数的 SET选项;除非回滚,否则其效果将持续存在。

注意

在Vastbase E100版本8.0到8.2中, SET LOCAL的效果将通过释放较早的保存点或成功退出PL / pgSQL异常块来取消。此行为已被更改,因为它被认为是不直观的。

参数说明

  • SESSION

    指定该命令对当前会话生效。 (如果没有出现 SESSION 和 LOCAL,则这是默认值。)

  • LOCAL

    指定该命令仅对当前事务生效。在 COMMIT 或 ROLLBACK之后,会话级别设置将再次生效。在事务块之外发出此消息会发出警告,否则无效。

  • configuration_parameter

    可设置的运行时参数说明的名称。

  • value

    参数说明的新值。值可以指定为字符串常量,标识符,数字或以逗号分隔的列表,适用于特定参数说明。可以编写DEFAULT 以指定将参数说明重置为其默认值(即,如果在当前会话中没有执行 SET,它将具有的值)。

    还有一些只能使用 SET 命令调整或具有特殊语法:

  • SCHEMA

    SET SCHEMA 'value' 是 SET search_path TO value的别名。使用此语法只能指定一个模式。

  • NAMES

    SET NAMES value 是 SET client_encoding TO value 的别名。

  • SEED

    设置随机数生成器的内部种子(函数 random)。允许值是介于-1和1之间的浮点数,然后乘以231-1。

    也可以通过调用 setseed 函数来设置种子:

    SELECT setseed(value);
    
  • TIME ZONE

    SET TIME ZONE value 是 SET timezone TO value 的别名。语法 SET TIME ZONE允许时区规范的特殊语法。以下是有效值的示例:

  • 'PST8PDT'

    加利福尼亚州伯克利的时区。

  • 'Europe/Rome'

    意大利的时区。

  • -7

    UTC以西7小时的时区(相当于PDT)。正值来自UTC。

  • INTERVAL '-08:00' HOUR TO MINUTE

    UTC以西8小时的时区(相当于PST)。

  • LOCAL

  • DEFAULT

    将时区设置为本地时区(即服务器的默认值 timezone )。

以数字或间隔给出的时区设置在内部转换为POSIX时区语法。例如,在 SET TIMEZONE -7 之后, SHOW TIME ZONE 将报告 <-07>+07 。

注意事项

函数 set_config 提供等效功能。此外,可以更新 pg_settings系统视图以执行 SET 的等效操作。

示例

设置架构搜索路径:

SET search_path TO my_schema, public;

使用”前一天”输入约定将日期样式设置为传统POSTGRES:

SET datestyle TO postgres, dmy;

设置加利福尼亚州伯克利的时区:

SET TIME ZONE 'PST8PDT';

设置意大利的时区:

SET TIME ZONE 'Europe/Rome';