当我从表中意外选择了不存在的列'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文档中我可以阅读哪些内容吗?我找不到任何东西,并使用谷歌搜索“选择”,“名称”等并不是真的有用。
感谢您提前回答! ķ
答案 0 :(得分:1)
在PostgreSQL邮件列表中查看此主题:
http://archives.postgresql.org/pgsql-general/2010-02/msg01038.php
基本上foo.name
被“翻译”为name(foo)
我同意这很令人困惑。