Jak ustawić i uzyskać niestandardowe zmienne bazy danych?

9

Za pomocą PGAdmin IIImogę kliknąć bazę danych prawym przyciskiem myszy, przejść do Variableskarty i umieścić właściwość zmiennej nazwa-wartość w samej bazie danych. Czy istnieje sposób na ich dostosowanie? Widziałem application_namezmienną, ale chciałbym mieć application_versionzmienną.

Jeremy Holovacs
źródło

Odpowiedzi:

8

Musisz dodać zmienną na końcu swojego postgresql.confupodobania

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

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

general.application_version = 'v1.0'

Po ponownym uruchomieniu możesz dodać general.application_versionręcznie w PgAdmin (nie pojawi się w menu rozwijanym - przynajmniej nie dla mnie). W przeciwnym razie możesz użyć go tak jak każdej innej zmiennej PostgreSQL.

Aktualizacja do wersji 9.2 i nowszych

Począwszy od PostgreSQL 9.2, nie musimy custom_variable_classesjuż ustawiać . Można ustawić dowolną zmienną, jaką chcą - jedynym ograniczeniem wydaje się być to, że wciąż musi mieć dwie części:

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

SET thing.something TO 'bla';
SET

Chyba tak, aby uniknąć kolizji z wbudowanymi parametrami.

dezso
źródło
Hmmm. Nie da się tego zrobić z zapytania SQL w bazie danych?
Jeremy Holovacs,
Musisz najpierw zdefiniować zmienne w postgresql.conf. AFAIK wymaga ponownego uruchomienia PostgreSQL, więc nie można tego zrobić z SQL.
dezso,
8

Aby dodać do odpowiedzi @ dezso, zmienne te można zmienić za pomocą

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

i czytaj z

SELECT current_setting('class.name')

Zobacz ten link, aby uzyskać więcej informacji: http://www.postgresql.org/docs/9.3/static/functions-admin.html

Gergely Zsamboki
źródło