Postgresql:使用 JSON 输入更新多行

Postgresql: Update multiple rows using JSON input

我正在尝试更新 table

中存在的多行

样本输入JSON:i_data

i_data = {
"odId":"test",
"key":"dample",
"items":[{
   item_id: 1
   quantity : 10,
   statusId : 10
},
{
   item_id: 2
   quantity : 10,
   statusId : 10
}]
}

更新查询 - 需要更改的地方

UPDATE vw_item_status_detail vis 
SET
      quantity = (jst->>'quantity')::numeric,
      status_id = (jst->>'statusId')::numeric
FROM 
      jsonb_array_elements(i_data  -> 'items') as jst
WHERE 
      jst->>'itemId' = vis.item_id;

努力更新!!! 解决方案已编辑

在需要更新的地方插入查询 出现错误:用作表达式的子查询返回多于一行

   INSERT INTO item (
      fulfiller_id,
      item_id,
      order_id,
      status_id,
      sku_code,
      decoration_technology,
      quantity,
      created_time)
   SELECT 
      i_data->>'fulfillerId' fulfillerId, 
      t->>'itemId' itemId, 
      i_data->>'orderId' orderId, 
      1000,
      t->>'skuCode' skuCode,
      t->>'decorationTechnology' decorationTechnology,
      (t->>'quantity')::numeric quantity ,
      NOW()
   FROM jsonb_array_elements(i_data  -> 'items') t
WHERE
 NOT EXISTS (
        select vd.item_id FROM vw_item_status_detail vd WHERE vd.item_id = t->>'itemId'
    );;

正在处理插入查询!!! 解决方案已编辑

UPDATE vw_item_status_detail vis 
SET
      quantity = (jst->>'quantity')::numeric,
      status_id = (jst->>'statusId')::numeric
FROM 
      jsonb_array_elements(i_data  -> 'items') as jst
WHERE 
      jst->>'itemId' = vis.item_id;


   INSERT INTO item (
      fulfiller_id,
      item_id,
      order_id,
      status_id,
      sku_code,
      decoration_technology,
      quantity,
      created_time)
   SELECT 
      i_data->>'fulfillerId' fulfillerId, 
      t->>'itemId' itemId, 
      i_data->>'orderId' orderId, 
      1000,
      t->>'skuCode' skuCode,
      t->>'decorationTechnology' decorationTechnology,
      (t->>'quantity')::numeric quantity ,
      NOW()
   FROM jsonb_array_elements(i_data  -> 'items') t
WHERE
 NOT EXISTS (
        select vd.item_id FROM vw_item_status_detail vd WHERE vd.item_id = t->>'itemId'
    );;

在 postgresql 中对视图进行更新插入的工作解决方案