TeleDB提供了三个SQL命令来建立配置默认值。已经提到过的ALTER SYSTEM命令提供了一种改变全局默认值的从SQL可访问的方法;它在功效上等效于编辑postgresql.conf。此外,还有两个命令可以针对每个数据库或者每个角色设置默认值:
- ALTER DATABASE命令允许针对一个数据库覆盖其全局设置。
- ALTER ROLE命令允许用用户指定的值来覆盖全局设置和数据库设置。
只有当开始一个新的数据库会话时,用ALTER DATABASE和 ALTER ROLE设置的值才会被应用。它们会覆盖从配置文件或服务器命令行获得的值,并且作为该会话后续的默认值。注意某些设置在服务器启动后不能被更改,因此不能用这些命令来设置。
一但一个客户端连接到数据库,TeleDB会提供两个额外的SQL命令(以及等效的函数)用以影响会话本地的配置设置:
- SHOW命令允许察看所有参数的当前值。对应的函数是 current_setting(setting_name text)。
- SET命令允许修改对于一个会话可以本地设置的参数的当前值, 它对其他会话没有影响。对应的函数是 set_config(setting_name, new_value, is_local)。
此外,系统视图pg_settings可以被用来查看和改变会话本地的值:
- 查询这个视图与使用SHOW ALL相似,但是可以提供更多细节。它也更加灵活,因为可以为它指定过滤条件或者把它与其他关系进行连接。
- 在这个视图上使用UPDATE并且指定更新setting列,其效果等同于发出SET命令。例如,下面的命令
SET configuration_parameter TO DEFAULT;
等效于:
UPDATE pg_settings SET setting = reset_val WHERE name = 'configuration_parameter';