2010-03-01 6 views
2

Ceci est le comportement par défaut de PostgreSQL est un chemin de recherche comme ceci:Postgres schéma Problème

SHOW search_path; 

search_path 
-------------- 
"$user",public 

est-il un moyen de faire de sorte que le « $ user » est insensible à la casse?

Par exemple, j'ai un TP1 utilisateur, et un schéma de TP1 ... Je les aime tous les deux à être considérés comme des « égaux »

Est-ce même possible?

Répondre

2

Ne créez jamais de contenu sensible à la casse, point. Déjà. Il est finalement source de confusion et vous obligera à les mettre entre guillemets lorsque vous les utilisez. Vous pouvez être sûr que votre contenu n'est pas sensible à la casse en n'utilisant pas du tout de guillemets doubles. C'est comme une règle cardinale dans Pg.

En bref non vous ne pouvez pas, mais vous pouvez ajouter à votre search_path.

test=# create schema "ECARROLL"; 
CREATE SCHEMA 
test=# create table "ECARROLL".foo (foobar int); 
CREATE TABLE 
test=# select * from foo; 
ERROR: relation "foo" does not exist 

Si vous le souhaitez, vous pouvez coder en dur l'autre schéma: SET search_path TO "$user","ECARROLL",public;

Vous pouvez écrire des scripts une requête des schémas nommés insensibles à la casse et les mettre dans l'environnement de scripts.

test=# SELECT schema_name FROM information_schema.schemata WHERE schema_name ILIKE current_user; 
schema_name 
------------- 
ECARROLL