行级安全双连接

hoa*_*oan 2 postgresql row-level-security supabase

我有三张桌子

旅程
ID
用户身份
...
部分
ID
旅程_id
...
停止
ID
节号
...

我想使用行级安全性来确保用户只能插入 astop如果与via -> ->引用的the 相uid()匹配。user_idjourneystopstops.section_idsections.journey_idjourneys.user_id

换句话说,用户应该只能设置stops.section_id为a section,从而设置为journey属于他的a。

如何在 Supabase 中通过行级安全连接实现此目的?

Lau*_*lbe 6

您可以使用一个EXISTS条件:

CREATE POLICY may_insert_stop ON stops
FOR INSERT TO PUBLIC
WITH CHECK (EXISTS (SELECT 1
                    FROM journeys AS j
                       JOIN sections AS s ON s.journey_id = j.id
                    WHERE s.id = stops.section_id
                      AND j.user_id = uid()
                   )
           );
Run Code Online (Sandbox Code Playgroud)