选择行级安全设置

时间:2017-10-06 08:25:02

标签: postgresql row-level-security

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

我在这里有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感到困惑。我的问题是,我在这里错过了什么?我怎样才能使这个工作。

1 个答案:

答案 0 :(得分:2)

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

ON public."group"

WHERE "group".id