Définir le search_path pour un rôle et/ou une base de données PostgreSQL

Logo PostgreSQL

Le search_path permet de un schéma par défaut qui sera ensuite automatiquement rajoutée à chaque table lors des requêtes.

Pour savoir quel est le search_path courant

il suffit de taper :

SHOW search_path;

Par défaut sa valeur est

"$user",public

Modifier le search_path courant

on peut taper la commande suivante :

SET SEARCH_PATH TO mon_schema,public;

Lors d'une requête, PostgreSQL préfixera d'abord par "mon_schema." puis si aucune table n'est trouvée dans le schéma "public."

Cette méthode n'est pas persistante et le search_path sera remis à sa valeur initiale lors d'un redémarrage du serveur de base de données.

Comment attribuer un search_path à un role PostgreSql spécifique ?

Pour conserver le search_path, on doit l'attribuer à un rôle de connexion :

ALTER ROLE mon_utilisateur SET search_path TO mon_schema,public;

Ou, plus finement, à un rôle ET à une base de données :

ALTER ROLE mon_utilisateur IN DATABASE ma_bdd SET search_path TO mon_schema,public;