我的问题是: 为什么有些postgresql函数需要空括号而其他函数则不需要,如何判断正确的语法?
实施例: 这不起作用
select pg_postmaster_start_time;
结果
ERROR: column "pg_postmaster_start_time" does not exist
LINE 1: select pg_postmaster_start_time;
^
然而这有效:
select pg_postmaster_start_time();
导致
pg_postmaster_start_time
-------------------------------
2016-08-01 16:07:12.728306+01
(1 row)
现在对于相反的情况:这是有效的
select current_user;
,结果是
current_user
--------------
edbstore
(1 row)
但这不起作用
select current_user();
导致
ERROR: syntax error at or near "("
LINE 1: select current_user();
^
我确实发现这已被问到here,但似乎没有答案
答案 0 :(得分:2)
阅读docs - 它说
注意:current_catalog,current_schema,current_user,session_user和 用户在SQL中具有特殊的语法状态:必须在没有的情况下调用它们 尾随括号。 (在PostgreSQL中,括号可以选择 与current_schema一起使用,但不与其他人一起使用。)
我知道这听起来像"因为它是这么说的,所以实际上并没有回答你的问题。但这就是文档解释它的方式。