¿Cómo configuro y obtengo variables de base de datos personalizadas?

9

Utilizando PGAdmin IIIpuedo hacer clic derecho en una base de datos, navegar a la Variablespestaña y poner una propiedad de nombre-valor variable en la base de datos. ¿Hay alguna manera de personalizarlos? Vi una application_namevariable, pero me gustaría tener una application_versionvariable.

Jeremy Holovacs
fuente

Respuestas:

8

Tienes que agregar la variable al final de tu me postgresql.confgusta

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

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

general.application_version = 'v1.0'

Cuando se reinicia, puede agregar general.application_versionmanualmente en PgAdmin (no aparecerá en el menú desplegable, al menos no para mí). De lo contrario, puede usarlo como cualquier otra variable PostgreSQL.

Actualización para la versión 9.2 y posterior

Desde PostgreSQL 9.2 en adelante, ya no tenemos que configurarlo custom_variable_classes. Uno puede establecer cualquier variable que desee; la única limitación parece ser que todavía tiene que tener dos partes:

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

SET thing.something TO 'bla';
SET

Supongo que esto es así para evitar la colisión con los parámetros incorporados.

dezso
fuente
Hmmm ¿No hay forma de hacerlo desde una consulta SQL en la base de datos?
Jeremy Holovacs
Primero debe definir las variables en postgresql.conf. AFAIK esto requiere reiniciar PostgreSQL, por lo que no puede hacerlo desde SQL.
dezso
8

Para agregar a la respuesta de @ dezso, estas variables se pueden cambiar con

SELECT set_config('class.name', 'value', valid_for_transaction_only::boolean)

y leer con

SELECT current_setting('class.name')

Consulte este enlace para obtener más información: http://www.postgresql.org/docs/9.3/static/functions-admin.html

Gergely Zsamboki
fuente