Bagaimana cara mengatur dan mendapatkan variabel basis data khusus?

9

Menggunakan PGAdmin IIIsaya dapat mengklik kanan pada database, menavigasi ke Variablestab, dan meletakkan properti variabel-nilai pada database itu sendiri. Apakah ada cara untuk menyesuaikan ini? Saya melihat sebuah application_namevariabel, tetapi saya ingin memiliki application_versionvariabel.

Jeremy Holovacs
sumber

Jawaban:

8

Anda harus menambahkan variabel ke akhir postgresql.confsuka Anda

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

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

general.application_version = 'v1.0'

Ketika dimulai ulang, Anda dapat menambahkan general.application_versionsecara manual di PgAdmin (itu tidak akan muncul di drop-down - setidaknya bukan untuk saya). Jika tidak, Anda dapat menggunakannya sama seperti variabel PostgreSQL lainnya.

Pembaruan untuk versi 9.2 dan yang lebih baru

Dari PostgreSQL 9.2 dan seterusnya, kita tidak perlu mengatur custom_variable_classeslagi. Satu dapat mengatur variabel apa pun yang mereka inginkan - satu-satunya batasan tampaknya masih harus memiliki dua bagian:

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

SET thing.something TO 'bla';
SET

Saya kira ini adalah untuk menghindari tabrakan dengan parameter bawaan.

dezso
sumber
Hmmm. Tidak ada cara untuk melakukan itu dari permintaan SQL di database?
Jeremy Holovacs
Anda harus terlebih dahulu mendefinisikan variabel di postgresql.conf. AFAIK ini membutuhkan restart PostgreSQL, jadi Anda tidak bisa melakukannya dari SQL.
dezso
8

Untuk menambah jawaban @ dezso, variabel-variabel ini dapat diubah dengan

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

dan baca dengan

SELECT current_setting('class.name')

Lihat tautan ini untuk info lebih lanjut: http://www.postgresql.org/docs/9.3/static/functions-admin.html

Gergely Zsamboki
sumber