SET
更新时间:2026-06-25
SET
更改PalopgMPP数据库配置参数的值。
语法
SQL
1 SET [SESSION | LOCAL] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
2 SET [SESSION | LOCAL] TIME ZONE {timezone | LOCAL | DEFAULT}
3 ```
4
5
6
7## 描述
8
9`SET`命令更改服务器配置参数。 任何分类为`session`参数的配置参数都可以使用`SET`即时更改。 `SET`仅影响当前会话使用的值。
10
11 如果在稍后中止的事务中发出`SET`或`SET SESSION`,则回滚该事务时`SET`命令的效果会消失。一旦提交了事务,效果将一直持续到会话结束,除非被另一个`SET`覆盖。
12
13 `SET LOCAL`的影响仅持续到当前事务结束为止,无论是否提交。 特殊情况是在单个事务中`SET LOCAL`紧随`SET`其后: `SET LOCAL`值将一直显示到事务结束为止,但是此后(如果提交了事务)`SET`值将生效。
14
15 如果在包含针对同一配置参数的`SET`选项的函数中使用`SET LOCAL`(请参见`CREATE FUNCTION`), 则`SET LOCAL`命令的效果在函数退出时消失; 无论如何,将恢复调用该函数时有效的值。 这允许将`SET LOCAL`用于函数中参数的动态或重复更改,同时保留使用`SET`选项保存和恢复调用者值的便利。 请注意,常规的`SET`命令会覆盖周围函数的`SET`选项。除非回滚,否则其影响持续存在。
16
17 如果在事务中使用`DECLARE`命令创建游标, 则只有在使用`CLOSE`命令关闭游标后才能在事务中使用`SET`命令。
18
19
20
21
22
23## 参数
24
25该SQL命令参数说明见下
26
27 `SESSION`
28 : 指定该命令对当前会话生效。这是默认值。
29
30 `LOCAL`
31 : 指定该命令仅对当前事务生效。 在`COMMIT`或`ROLLBACK`之后,会话级设置将再次生效。 请注意,如果`SET LOCAL`在事务外部执行,则似乎无效。
32
33 `configuration_parameter`
34 : PalopgMPP数据库配置参数的名称。 使用`SET`只能更改分类为*session*的参数。
35
36 `value`
37 : 参数的新值。 可以将值指定为字符串常量,标识符,数字或以逗号分隔的列表。 `DEFAULT`可用于指定将参数重置为其默认值。如果指定内存大小或时间单位,则将值用单引号引起来。
38
39 `TIME ZONE`
40 : `SET TIME ZONE`值是`SET timezone TO value`。 语法`SET TIME ZONE`允许时区指定使用特殊语法。 以下是有效值的示例: `'PST8PDT'` `'Europe/Rome'` `-7` (UTC以西7小时时区) `INTERVAL '-08:00' HOUR TO MINUTE` (UTC以西8小时时区)。
41
42 `LOCAL` \| `DEFAULT`
43 : 将时区设置为您的本地时区(即服务器的默认`timezone`)。
44
45
46
47
48## 示例
49
50设置schema搜索路径:
51
52 ``` sql
53 SET search_path TO my_schema, public;
54 ```
55
56 将每个查询的executor主机内存增加到200 MB:
57
58 ``` sql
59 SET statement_mem TO '200MB';
60 ```
61
62 把日期风格设置为传统POSTGRES的"日在月之前"的输入习惯:
63
64 ``` sql
65 SET datestyle TO postgres, dmy;
66 ```
67
68 设置加利福尼亚州圣马特奥市的时区(太平洋时间):
69
70 ``` sql
71 SET TIME ZONE 'PST8PDT';
72 ```
73
74 设置意大利的时区:
75
76 ``` sql
77 SET TIME ZONE 'Europe/Rome';
78 ```
79
80
81
82兼容性说明
83: `SET TIME ZONE`扩展了SQL标准中定义的语法。 该标准仅允许数字时区偏移,而PalopgMPP数据库允许更灵活的时区规范。`SET`的所有其他功能都是PalopgMPP数据库扩展。
84
85
86
87相关SQL命令
88: `RESET`, `SHOW`
评价此篇文章
