选择不存在的列'name'返回tupels(PostgreSQL)

时间:2011-01-12 08:44:28

标签: postgresql select

当我从表中意外选择了不存在的列'name'时,该语句将记录作为元组返回(请参阅下面的示例)。这适用于服务器版本8.4.3(不是8.2)。客户是8.4.4。

BEGIN;

CREATE TEMP TABLE tmp_tbl 
  ( foo varchar(8), bar varchar(8), baz varchar(8) )
ON COMMIT DROP;

COPY tmp_tbl ( foo, bar, baz) 
FROM stdin
WITH DELIMITER ',';
justus,peter,bob
langly,frohike,byers
alpha,beta,gamma
\.

-- SELECT * from tmp_tbl;
SELECT tmp_tbl.name from tmp_tbl;

END;

输出

          name          
------------------------
 (justus,peter,bob)
 (langly,frohike,byers)
 (alpha,beta,gamma)
(3 rows)

而不是错误,正如我所料。

你能告诉我在PostgrSQL文档中我可以阅读哪些内容吗?我找不到任何东西,并使用谷歌搜索“选择”,“名称”等并不是真的有用。

感谢您提前回答! ķ

1 个答案:

答案 0 :(得分:1)

在PostgreSQL邮件列表中查看此主题:

http://archives.postgresql.org/pgsql-general/2010-02/msg01038.php

基本上foo.name被“翻译”为name(foo)

我同意这很令人困惑。