如何设置和获取自定义数据库变量?

Jer*_*acs 9 postgresql

使用PGAdmin IIII 可以右键单击数据库,导航到Variables选项卡,然后在数据库本身上放置一个变量名-值属性。有没有办法自定义这些?我看到了一个application_name变量,但我想要一个application_version变量。

dez*_*zso 8

您必须将变量添加到您postgresql.conf喜欢的末尾

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

custom_variable_classes = 'general'     # list of custom variable class names

general.application_version = 'v1.0'
Run Code Online (Sandbox Code Playgroud)

重新启动后,您可以general.application_version在 PgAdmin 中手动添加(它不会显示在下拉列表中 - 至少对我而言不会)。否则,您可以像使用任何其他 PostgreSQL 变量一样使用它。

9.2 及更新版本的更新

从 PostgreSQL 9.2 开始,我们不再需要设置custom_variable_classes。人们可以设置他们想要的任何变量——唯一的限制似乎是它仍然必须有两个部分:

SET something TO 'bla';
ERROR:  unrecognized configuration parameter "something"

SET thing.something TO 'bla';
SET
Run Code Online (Sandbox Code Playgroud)

我想这是为了避免与内置参数发生冲突。


小智 8

要添加到@dezso 的答案中,可以更改这些变量

SELECT set_config('class.name', 'value', valid_for_transaction_only::boolean)
Run Code Online (Sandbox Code Playgroud)

并阅读

SELECT current_setting('class.name')
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此链接:http : //www.postgresql.org/docs/9.3/static/functions-admin.html