0

我正在尝试select在 postgres 的行级安全策略的权限检查中添加一个。

我这里有 2 个表要关心 1) 组 2) group_member

  • group - 有一个 group_id 和 person_id(即创建组的人)
  • group_member - 有 group_id 和 person_id

我想表达的是群主踢群成员或群成员自行离开的能力。

这是我的政策:

CREATE POLICY delete_group_member ON public.group FOR DELETE TO hatch_contributor USING (
      person_id = current_setting('jwt.claims.person_id')::integer or
      EXISTS (
        SELECT * FROM group WHERE group.id = group_id AND group.person_id = current_setting('jwt.claims.person_id')::integer)
      ));

但是,我收到以下错误 -syntax error at or near "group"

我怀疑,postgres 不明白group_id来自哪里。在这种情况下,也许对一般情况感到困惑group。我的问题是,我在这里缺少什么?我怎样才能得到这个工作。

4

1 回答 1

2

GROUP是 SQL 中的关键字。不要将其用作表名。如果你必须使用它,你必须引用它,例如

ON public."group"

WHERE "group".id
于 2017-10-06T08:50:19.433 回答