2017-10-06 50 views
0

我正在尝试在postgres的行级安全策略的权限检查中添加select使用行级别安全设置进行选择

我有2个表关心这里1)第2组)组 - 成员

  • 组 - 有GROUP_ID和为person_id(这是谁做的 组的人)
  • 组 - 成员 - 已GROUP_ID和person_id

我想表达的是团队所有者踢出group_member或group_member自己离开的能力。

这里是我的政策:

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

回答

2

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

ON public."group" 

WHERE "group".id 
+0

感谢这个工作! – Parris