Saya ingin menyimpan id pengguna dalam variabel sesi khusus dan menggunakannya (baca) dalam prosedur pemicu untuk mengotorisasi tindakan pengguna. Saya menemukan sesuatu seperti ini:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
dan tampaknya berfungsi - saya pikir "myapp.user" harus dideklarasikan dalam file .conf tetapi tampaknya saya dapat membuat variabel sesi dengan cepat (saya tidak mengubah file .conf sama sekali).
Apakah ada kerugian melakukan seperti ini?
postgresql
postgresql-9.4
pengguna606521
sumber
sumber
myapp.user
harus dideklarasikanpostgresql.conf
telah dihapus pada 9,2 atau 9,1Jawaban:
Sebelum versi 9.2, Anda perlu menambahkan variabel kelas khusus ke
custom_variable_classes
parameter dalampostgresql.conf
, seperti:Dalam 9.2, persyaratan ini telah dihapus :
Jadi, karena 9.2 Anda hanya dapat mengatur variabel kelas kustom Anda seperti yang Anda lakukan saat ini, tidak perlu khawatir tentang perubahan
postgresql.conf
.sumber
Jika Anda hanya perlu menyimpan ID pengguna, lihat Cara mendapatkan ID pengguna OS di PostgreSQL
Ini sangat sederhana, dan tidak memerlukan konfigurasi khusus.
sumber
Untuk kasus seperti ini saya ingin membuat fungsi plperl seperti ini:
Keuntungan dari ini adalah bahwa ia berfungsi dalam pernyataan sql juga, misalnya:
sumber