我有一个带有user_id列和policy_id列的表“policies_views”,我试图创建一个策略,以防止在user_id = auth.id()和class_id = request.class_id的情况下插入记录。
我创建了这个函数“can_create_view”
DECLARE
record_exists BOOLEAN;
BEGIN
-- Check if a record exists with the provided user_id and policy_id
SELECT EXISTS (
SELECT 1
FROM policies_views
WHERE policies_views.user_id = auth.uid() AND policies_views.policy_id = policyid
) INTO record_exists;
-- Return true if no record exists, false otherwise
RETURN NOT record_exists;
END;
字符串
我使用这个函数来创建一个新的策略“用户只能为每个策略创建一个视图”,用于插入和检查can_create_view(policy_id)
我总是得到
{
"code": "42501",
"details": null,
"hint": null,
"message": "new row violates row-level security policy for table \"policies_views\""
}
型
我在SQL方面很弱,不知道我在这里做错了什么
1条答案
按热度按时间ltqd579y1#
我通过将函数的安全性设置为
Definer
并使用此函数定义来使其工作字符串