我正在尝试在 postgres 中创建一个导致column reference "person_id" is ambiguous
.
为了做一个类似的小例子,让我们描述 3 个表:person、group 和 group_member。
个人有:id、姓名
组有:id、person_id 和姓名 组员
有:id、person_id、group_id
我已经简化了我的策略,但相关部分看起来像这样:
CREATE POLICY insert_group_member ON public."group" FOR INSERT TO user_role WITH CHECK (
EXISTS (
SELECT * FROM "group" AS g
LEFT JOIN "group_member" AS gm ON
g.person_id = gm.person_id
AND g.id = gm.group_id
WHERE
g.id = id AND
gm.person_id = person_id AND
g.members_can_invite = TRUE
)
);
在这种情况下,person_id 可以从子选择中引用 group.person_id 或 group_member.person_id,但我真正想要的是来自“with check”的 person_id。这通常在其他地方有效。
问题:有没有办法明确指定 person_id 列来自策略,而不是来自 select 或 join。注意:我原以为表名的别名可以解决这个问题,但似乎没有。