幻影"名字"专栏?

Chr*_*vey 2 postgresql

我开始简单:

hoops=# select * from core_school limit 3;
 id |   school_name    | nickname 
----+------------------+----------
  1 | Marshall         | 
  2 | Ohio             | 
  3 | Houston          | 
(10 rows)
Run Code Online (Sandbox Code Playgroud)

让我们介绍一个故意错误:

hoops=# select name from core_school;
ERROR:  column "name" does not exist
LINE 1: select name from core_school;
Run Code Online (Sandbox Code Playgroud)

但为什么这有效呢?(意外结果!):

hoops=# select core_school.name from core_school limit 3;
  name       
-----------------
(1,Marshall,"")
(2,Ohio,"")
(3,Houston,"")
(3 rows)
Run Code Online (Sandbox Code Playgroud)

"名称"列在哪里来自第三个查询?

Qua*_*noi 8

这是自动PostgreSQL播放功能,允许呼叫function(argument)为argument.function.

你真正称呼的是

SELECT  NAME(core_school)
FROM    core_school
Run Code Online (Sandbox Code Playgroud)

与此相比:

SELECT  (1::int).exp
--
2.71828182845905
Run Code Online (Sandbox Code Playgroud)

这是非常自我解释的.

这种"特征"经常导致混乱,并且(最终)将被删除9.1.