直接从json更新表

时间:2019-05-10 10:26:19

标签: postgresql

我有一些json,如下所示

{"id":21,"name":"Ram","address":"mumbai","mobile":"1234567891"}

我在postgres中有一张桌子:tblstudents (id,name,address,mobile)

现在我想根据上面的json直接从输入参数更新此表中的记录:

update tblstudents
   set name=[name value from json],
   address=[address value from json]
 where id=[id value from json]

实际上这是一个PUT请求,并且参数在postgres函数中从前端作为json发送。我想使用此json更新表格。 如何实现此功能,或者实现此功能的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用jsonb_populate_record函数创建适当的记录。 Postgres为您的表隐式创建一个类型,因此您可以使用以下类型:

UPDATE tblstudents
  set name = json_record.name,
  address = json_record.address
FROM jsonb_populate_record(null::tblstudents, 
     '{"id":21,"name":"Ram","address":"mumbai","mobile":"1234567891"}'::jsonb) 
     as json_record
WHERE json_record.id = tblstudents.id;