首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无限递归RLS

无限递归RLS
EN

Stack Overflow用户
提问于 2022-05-24 20:31:27
回答 1查看 145关注 0票数 0

我有一张桌子,像:

代码语言:javascript
复制
table person_groups
   person_id: uuid
   group_id: uuid

我希望那些uid() = person_id能够在他们的团队中得到所有其他person_ids的人。

我试着用

代码语言:javascript
复制
CREATE POLICY "select_comembers" ON "public"."person_groups"
AS PERMISSIVE FOR SELECT
TO public
USING (group_id in (select group_id from person_groups where person_id=uid()))

但是,当RLS被强制执行时,这会触发无限递归错误(在编辑时,定义器不受RLS约束,因此在这种情况下,这显然是没有问题的)。

以这种方式,允许在表中找到与您正在筛选的列共享不同列的所有行的适当方法是什么?是否有适当的方法来使用JOIN来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-05-25 05:56:09

听起来你应该重新设计你的数据模型。一个可能的解决方案是将子查询替换为调用SECURITY DEFINER函数,该函数属于表所有者或其他不受行级安全性限制的用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72369134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档