postgresql 错误:未为SELECT上的规则实现事件限定

xmq68pz9  于 2023-04-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(106)

我试图实现一个视图级规则,将可用列限制为特定的postgrest API的“web_anonymous”用户的选择。例如,在事件视图中,我不希望整个视图对该组可用,因此将其限制为某些列。
这是我的密码

ON SELECT TO manifestation.ds_evenements
    WHERE (CURRENT_USER = 'web_anonyme')
    DO INSTEAD
(SELECT nom_evenement, description_evenement
FROM manifestation.ds_evenements);

当我想验证规则时,我有这个错误消息,我无法解释:

ERROR: Event qualifications are not implemented for rules on SELECT

敬启

oxcyiej7

oxcyiej71#

您不能使用WHERE条件创建ON SELECT规则。此外,您的规则是循环的。
不要试图使用规则来实现这一点。相反,定义视图,以便它做正确的事情,例如:

CREATE VIEW ... AS
SELECT /* something */
WHERE current_user IS DISTINCT FROM 'web_anonyme'
UNION ALL
SELECT /* something else */
WHERE current_user = 'web_anonyme';

另一种方法是在基础表上结合使用行级安全性和security_invoker视图。

相关问题