You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何组合双条件编写resource_authors表的INSERT策略SQL表达式?

PostgreSQL INSERT策略:组合多条件实现资源作者关联表的插入控制

你可以直接用AND运算符把两个条件组合成一个布尔表达式,填入WITH CHECK子句中。这里提供两种写法,其中第二种性能更优:

写法一(基于COUNT统计)

CREATE POLICY insert_resources_authors ON public.resource_authors
    FOR INSERT TO public_user
    WITH CHECK (
        current_user_id() IS NOT NULL
        AND (SELECT count(user_id) = 0 FROM resource_authors WHERE resource_id = NEW.resource_id)
    );

写法二(基于NOT EXISTS推荐)

用NOT EXISTS替代COUNT会更高效,因为它找到匹配的记录后就会停止查询,不需要统计所有行:

CREATE POLICY insert_resources_authors ON public.resource_authors
    FOR INSERT TO public_user
    WITH CHECK (
        current_user_id() IS NOT NULL
        AND NOT EXISTS (
            SELECT 1 FROM resource_authors WHERE resource_id = NEW.resource_id
        )
    );

条件说明

  • current_user_id() IS NOT NULL:确保执行插入操作的用户已登录,通过你的自定义函数验证登录状态
  • NOT EXISTS (...)/COUNT(...) = 0:验证待插入的资源ID在resource_authors表中还没有对应的作者记录,避免重复添加

内容的提问来源于stack exchange,提问作者machineghost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:25:22