使用策略和 RLS 设置行可见性

Set rows visibility using Policy and RLS

我需要将所有 select 语句的 deleted = true 值的行隐藏到 table。

我考虑过将行级安全性与 select 策略一起使用,但似乎行不通。

这是我尝试过的:

alter table my_table force row level security;

create policy my_selection_policy on my_table
for select to public using (deleted is not true);

预期的结果是现在 my_table 中的所有 deleted 行应该从 my_table 上的任何 select 查询中自动过滤掉。

所以,基本上,查询 select * from my_table where deleted = true; 会 return 给我一个空结果。


如何正确实现此类功能? RLS + 政策是实施该政策的正确方法吗?或者我应该只使用 before select 触发器?

So, basically, the query select * from my_table where deleted = true; would return me an empty result.

因为在这种情况下您不需要使用 where 子句从结果集中删除软删除的记录。

您只需要 select * from my_table; 条已使用 using (deleted is not true);

过滤掉的软删除记录