PostgreSQL和pgadmin3.exe

时间:2011-03-31 10:47:01

标签: postgresql window

我正在尝试使用postgres并发现一个非常奇怪的事情,我使用pgadminIII创建了一个名为testtable的表,并添加了几列然后我在查询编辑器中编写了以下查询

SELECT * from testtable;

它没有回复没有找到这样名字的表格,然后我尝试了

select * from "testtable"

用引号(后一个)它工作,然后我删除了表并使用脚本编辑器创建了表,同名,确保名称周围没有引号,然后两个查询开始工作,我无法理解立场究竟是什么意思,即使我在create table语句引号中写“teablename”也不应该成为表名的一部分。

另外,如何在使用pgAdmin图形用户界面时确保所有对象都是在没有引用的情况下创建的(当然,如果因为上述问题)?

更新:环境信息

  

OS => Windows Server 2008 x64,Postgres => 9.0.3-2 x64,pgAdmin => >   版本1。12。2(2011年3月22日,rev:>   REL-1_12_2)

1 个答案:

答案 0 :(得分: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