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

PostgreSQL jsonb列如何实现已有JSON数据的增量追加与更新操作

PostgreSQL jsonb列增量追加/更新嵌套键值对方案

你之前用||操作符出现格式化问题,是因为直接将新的profile结构与顶层jsonb对象拼接,没有定位到user_profile嵌套层级进行操作。以下是两种可直接落地的实现方案,同时支持新增profile和覆盖更新已存在的profile:

方案1:使用jsonb_set实现(推荐,语义更清晰)

UPDATE myjsontab
SET jsonb_details = jsonb_set(
  jsonb_details,
  '{user_profile}', -- 定位到顶层的user_profile字段
  -- 原有user_profile对象与新的profile键值对拼接,存在则覆盖,不存在则新增
  jsonb_details -> 'user_profile' || '{"admin staff": {
    "profile_name":"admin staff",
    "user_status":"NEW",
    "user_state":"admin upload",
    "s3url":"abc/"
  }}'::jsonb
);

方案2:直接用||操作符改写顶层结构

UPDATE myjsontab
SET jsonb_details = jsonb_details || jsonb_build_object(
  'user_profile',
  jsonb_details -> 'user_profile' || '{"admin staff": {
    "profile_name":"admin staff",
    "user_status":"NEW",
    "user_state":"admin upload",
    "s3url":"abc/"
  }}'::jsonb
);

注意事项

  • 追加的JSON字符串必须显式转换为jsonb类型,否则会触发类型不匹配错误,这是之前格式化问题的常见诱因
  • 如需批量追加多个profile,只需在拼接的JSON对象中添加多组键值对即可,无需执行多次更新操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:03