ERROR: SELECT上的规则没有实现事件限定



我正在尝试实现一个视图级规则,以限制可用的列为特定的web_anonymous"postgresql api的用户。例如,在事件视图中,我不希望整个视图对该组可用,因此将其限制为某些列。

这是我的代码

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

最好的方面

不能创建带有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视图。

相关内容

  • 没有找到相关文章

最新更新