如何默认启用行级安全性?

How to enable row level security by default?

人们可能会忘记启用它,所以我宁愿为不需要它的表明确禁用它。

默认情况下无法启用或禁用行级安全性。你必须ALTER TABLE ... ENABLE ROW LEVEL SECURITY。但是,我不明白你怎么能忘记它,因为 table 最初只能由其所有者访问。如果您随后使用 CREATE POLICY 创建行安全策略,您仍然无法访问,因此您会知道自己做错了什么。

您可以问自己为什么必须 ALTER TABLE ... ENABLE ROW LEVEL SECURITY 开始,但这是 postgresql-devel 邮件列表的问题,而不是 SO。

我认为您可以通过创建 event trigger.

默认情况下启用它

我还没有尝试过这个,但这应该足以让你入门。

在这种情况下,您实际上拥有一个在任何 CREATE TABLE 之后运行并启用行级安全性的函数。

PostgreSQL 9.5 的 PostgreSQL 文档位于 http://www.postgresql.org/docs/9.5/static/functions-event-triggers.html,其中包含可用于获取 table 信息的函数。这看起来可行。