Comment définir et obtenir des variables de base de données personnalisées?

9

En utilisant PGAdmin IIII, je peux cliquer avec le bouton droit sur une base de données, accéder à l' Variablesonglet et mettre une propriété nom-valeur variable sur la base de données elle-même. Existe-t-il un moyen de les personnaliser? J'ai vu une application_namevariable, mais j'aimerais en avoir une application_version.

Jeremy Holovacs
la source

Réponses:

8

Vous devez ajouter la variable à la fin de votre postgresql.conflike

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

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

general.application_version = 'v1.0'

Au redémarrage, vous pouvez ajouter general.application_versionmanuellement dans PgAdmin (il n'apparaîtra pas dans la liste déroulante - du moins pas pour moi). Sinon, vous pouvez l'utiliser comme n'importe quelle autre variable PostgreSQL.

Mise à jour pour la version 9.2 et plus récente

À partir de PostgreSQL 9.2, nous n'avons plus besoin de définir custom_variable_classes. On peut définir n'importe quelle variable qu'ils veulent - la seule limitation semble être qu'elle doit toujours avoir deux parties:

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

SET thing.something TO 'bla';
SET

Je suppose que c'est ainsi pour éviter la collision avec les paramètres intégrés.

dezso
la source
Hmmm. Pas moyen de le faire à partir d'une requête SQL dans la base de données?
Jeremy Holovacs
Vous devez d'abord définir les variables dans postgresql.conf. AFAIK, cela nécessite de redémarrer PostgreSQL, vous ne pouvez donc pas le faire à partir de SQL.
dezso
8

Pour compléter la réponse de @ dezso, ces variables peuvent être modifiées avec

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

et lire avec

SELECT current_setting('class.name')

Voir ce lien pour plus d'informations: http://www.postgresql.org/docs/9.3/static/functions-admin.html

Gergely Zsamboki
la source