值得注意的信息
search_path
配置为显示"brycetest, public"
由pgAdmin-III提供的查询构建器生成的此SQL按预期工作
SELECT "DummyDataMasterTable"."Dummy_PK",
"DummyDataMasterTable"."DummyName"
FROM "BryceTest"."DummyDataMasterTable";
但这不是
SELECT DummyDataMasterTable.Dummy_PK,
DummyDataMasterTable.DummyName
FROM BryceTest.DummyDataMasterTable;
-------------------------------------------
ERROR: relation "dummydatamastertable" does not exist
LINE 4: FROM DummyDataMasterTable;
^
********** Error **********
ERROR: relation "dummydatamastertable" does not exist
SQL state: 42P01
Character: 101
FROM BryceTest.DummyDataMasterTable;
SELECT
Dummy_PK,
DummyName
FROM DummyDataMasterTable;
-------------------------------
ERROR: relation "dummydatamastertable" does not exist
LINE 4: FROM DummyDataMasterTable; ^
********** Error **********
ERROR: relation "dummydatamastertable" does not exist
SQL state: 42P01
Character: 59
我认为通过配置我的架构search_path
来查看我新创建的架构 FIRST ,它不需要拥有完全限定的{{ 1}}
答案 0 :(得分:0)
您使用双引号创建了表,因此它们现在区分大小写(根据ANSI SQL标准的要求)。
"FooBar"
的名称与"Foobar"
的名称不同,但FooBar
和foobar
的名称相同(因为它们未被引用)。
因为您这样做了,所以必须引用表格和列名称始终。
以下情况有效,因为未引用标识符:
create table FooBar
(
Some_COLUMN integer
);
select some_column from foobar;
select SOME_COLUMN FROM FOOBAR;
select Some_ColumN from FooBAR;
我建议您重新创建没有任何引号的表,然后您可以以任何方式编写表和列名称(只要您不使用双引号)。
有关(引用的)标识符的更多详细信息,请参阅手册:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS