Je veux stocker l'ID utilisateur dans une variable de session personnalisée et l'utiliser (lire) dans les procédures de déclenchement pour autoriser les actions de l'utilisateur. J'ai trouvé quelque chose comme ça:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
et cela semble fonctionner - je pensais que "myapp.user" devrait être déclaré dans le fichier .conf mais il semble que je puisse créer des variables de session à la volée (je n'ai pas du tout changé le fichier .conf).
Y a-t-il un inconvénient à faire comme ça?
postgresql
postgresql-9.4
user606521
la source
la source
myapp.user
doit être déclarée dans apostgresql.conf
été supprimée en 9.2 ou 9.1Réponses:
Avant la version 9.2, vous deviez ajouter votre variable de classe personnalisée au
custom_variable_classes
paramètre danspostgresql.conf
, comme:Dans 9.2, cette exigence a été supprimée :
Donc, depuis 9.2, vous pouvez simplement définir votre variable de classe personnalisée comme vous le faites actuellement, pas besoin de vous soucier de changer
postgresql.conf
.la source
Si vous avez juste besoin de stocker l'ID utilisateur, consultez Comment obtenir l'ID utilisateur du système d'exploitation dans PostgreSQL
C'est assez simple et ne nécessite aucune configuration personnalisée.
la source
Pour des cas comme celui-ci, j'aime créer une fonction plperl comme celle-ci:
L'avantage de cela est qu'il fonctionne également dans les instructions SQL, par exemple:
la source