尝试使用自定义函数在hasura中创建计算字段

vyu0f0g1  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(371)

我尝试使用hasura计算字段和一个名为players的表来组合firstname和lastname列。下面是我复制和修改文档中显示的示例。

CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
    SELECT player_row.firstName || ' ' || player_row.lastName
$$ LANGUAGE sql STABLE;

返回以下错误:

SQL Execution Failed
postgres-error : missing FROM-clause entry for table "player_row"
kx1ctssn

kx1ctssn1#

顺便说一下,它可能与您的问题没有直接关系,但是对于postgres,只要您有列名,如果有任何大写字母,它就要求您引用字段,因此在这种情况下,您需要以下函数:

CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
    SELECT player_row."firstName" || ' ' || player_row."lastName"
$$ LANGUAGE sql STABLE;

注意列名周围的双引号,postgres会自动将所有列小写,我相信这就是为什么hasura会在他们的例子中选择snake-case。
我还注意到你在函数中引用了 player_row players ,确保 players 末尾的部分与表的确切名称匹配。

ct3nt3jp

ct3nt3jp2#

您的列是否命名为 firstName 以及 lastName ?
first_name 以及 last_name 作为 players 表中,我可以用共享的函数重现错误。
我相信您的选项是重命名first\u name-->firstname和last\u name-->lastname列,或者将full name函数定义为:

CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
    SELECT player_row.first_name || ' ' || player_row.last_name
$$ LANGUAGE sql STABLE;

相关问题