2011-03-31 35 views
1

我想开始玩的Postgres,发现一个很奇怪的事情,我创建使用pgadminIII表名为TestTable并添加几个栏然后我写了下面的查询编辑器查询PostgreSQL中和pgadmin3.exe

SELECT * from testtable; 

它的反应没有台这样的名称找到,那么之后我试图

select * from "testtable" 

与它的工作引号(后一个),然后我删除的表,并使用脚本编辑器创建的表,用相同的名字使它肯定名称周围没有引号,则两个查询都开始了工作,我不明白站在什么意思,即使我在创建表语句中编写“teablename”引号不应该成为表名的一部分。

有人可以帮助我了解这一点,也如果有人能告诉我怎样才能确保在使用的所有对象中获取无报价创建(因为那当然,如果上述问题)pgAdmin的图形用户界面

由于

更新:环境信息

OS =>在Windows Server 2008 x64上,Postgres的=> 9.0.3-2 64位,pgAdmin的=>> 版本1.12.2(2011年3月22日,启:> REL-1_12_2)

+0

可能是pgAdmin中的一个错误 – Stephan 2011-03-31 11:08:59

+0

您使用的是哪个版本的pgadmin以及您在使用哪个操作系统?你也可以包含你的create table语句吗? – Kuberchaun 2011-03-31 13:51:37

+0

OS => Windows Server 2008 x64,Postgres => 9.0.3-2 x64,pgAdmin =>版本1.12.2(2011年3月22日,修订版:REL-1_12_2) – 2011-04-01 05:11:55

回答

1

你使用新表对话框中的第一次?您不应该在对话框中使用引号,因为pgAdmin会插入所有必要的引号。

编辑 我今天发现了一些东西,有点奇怪,可能会解释发生在你身上的事情。

当您不引用表名称时,表名将转换为小写。所以,如果你

CREATE TABLE TestTable (...); 

你的表将被称为TestTable的 什么,当你开始查询表的情况是这样的:

SELECT * FROM TestTable; -- succeeds looks for testtable 
SELECT * FROM testtable; -- succeeds 
SELECT * FROM "TestTable"; -- fails because case doesn't match 

现在,如果你做了:

CREATE TABLE "TestTable" (...); 

您的表格实际上将被称为TestTable,并保留该案例,结果为

SELECT * FROM TestTable; -- fails looks for testtable 
SELECT * FROM testtable; -- fails 
SELECT * FROM "TestTable"; -- succeeds 
+0

我是没有在自己的对话中加入引号。 – 2011-04-04 08:00:02