Как мне установить и получить пользовательские переменные базы данных?

9

С помощью PGAdmin IIIя могу щелкнуть правой кнопкой мыши базу данных, перейти на Variablesвкладку и поместить свойство переменной name-value в саму базу данных. Есть ли способ настроить их? Я видел application_nameпеременную, но я хотел бы иметь application_versionпеременную.

Джереми Холовач
источник

Ответы:

8

Вы должны добавить переменную в конце вашего postgresql.confлайка

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

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

general.application_version = 'v1.0'

При перезапуске вы можете добавить 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

Я думаю, это так, чтобы избежать столкновения со встроенными параметрами.

Dezso
источник
Хммм. Нет способа сделать это из SQL-запроса в базе данных?
Джереми Холовач
Сначала вы должны определить переменные в postgresql.conf. AFAIK это требует перезапуска PostgreSQL, так что вы не можете сделать это из SQL.
Дезсо
8

Чтобы добавить к ответу @ dezso, эти переменные можно изменить с помощью

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

и читать с

SELECT current_setting('class.name')

Смотрите эту ссылку для получения дополнительной информации: http://www.postgresql.org/docs/9.3/static/functions-admin.html

Гергели Жамбоки
источник