在UPDATE WHERE子句Postgres 10中使用JSONB数组中的属性

时间:2018-07-23 16:12:44

标签: sql json postgresql jsonb

我有一个类似于以下所示的表格:

CREATE TABLE jsontesting (id int, jsondata jsonb)

INSERT INTO jsontesting VALUES( 1,'[  
   {  
      "value":1,
      "content":{  
         "en-US":"A. This is response A",
         "es-MX":"A. Esta es la respuesta A"

      }
   },
   {  
      "value":2,
      "content":{  
         "en-US":"A. This is response B",
         "es-MX":"Esta es la respuesta B"
      }
   }
]'),
(2, '[
   {  
      "value":1,
      "content":{  
         "en-US":"A. This is response C",
         "es-MX":"A. Esta es la respuesta C"

      }
   },
   {  
      "value":2,
      "content":{  
         "en-US":"A. This is response D",
         "es-MX":"Esta es la respuesta D"
      }
   }
]')

我想根据值属性更新此表:

    UPDATE jsontesting 
    SET    jsondata = Jsonb_set(jsondata, '{0,"content","en-US"}', value_r) 
    FROM   (SELECT 1                        AS id, 
           1                        AS key_response, 
           'This is new response Z' AS value_r) z 
    WHERE  Jsonb_array_elements_text(jsondata) ->> 'value' = z.keys_response 
   AND id = z.id; 
  

有错误:   [代码:,SQL状态:0A000]错误:在WHERE中不允许使用set-turning函数     位置:181

有什么方法可以根据此json中的属性更新postgresql jsonb数组吗?

0 个答案:

没有答案