Postgres架构问题

时间:2010-03-01 19:06:43

标签: sql database postgresql

这是PostgreSQL的默认行为,是一个像这样的搜索路径:

SHOW search_path;

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

有没有办法让“$ user”不区分大小写?

例如我有一个用户tp1和一个模式TP1 ......我希望他们都被视为“平等”

这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

永远不要创建区分大小写的东西。永远。它最终会让人感到困惑,并会在你使用它们时强迫你把它们放在引号中。你可以确定你的东西不区分大小写,只是根本不使用双引号。这就像Pg中的基本规则。

简而言之,你不能,但你可以添加到你的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

如果您希望可以对其他架构进行硬编码:SET search_path TO "$user","ECARROLL",public;

您可以编写不区分大小写的命名模式的查询脚本,并在脚本环境中设置它们。

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