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

PostgreSQL函数中如何将jsonb数组拆分为独立行插入表中

解决方案

以下是修改后可直接运行的函数代码:

CREATE OR REPLACE FUNCTION tribal.fn_add_documents(spec jsonb)
 RETURNS jsonb
 LANGUAGE plpgsql
AS $function$
BEGIN
    INSERT INTO documents (client, id_document) 
    SELECT 
        spec->>'client',
        jsonb_array_elements_text(spec->'documents')::uuid;
    RETURN '{"code": "200"}'::jsonb;
END;
$function$;

核心修改说明

  • 类型匹配调整:原代码使用处理json类型的json_array_elements处理jsonb入参,替换为jsonb_array_elements_text,直接返回数组元素的文本格式,减少不必要的类型转换。
  • 补充client字段插入:通过->>运算符从入参中提取client字段的文本值,和数组拆分后生成的多行数据一一对应插入。
  • 字段类型适配:因为id_document是UUID类型,将拆分得到的字符串直接转成uuid类型,符合字段定义要求。
  • 返回值类型统一:原函数定义返回json类型,实际返回值为jsonb,调整返回值类型为jsonb避免类型不兼容报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:03