首页 > 解决方案 > 直接从 json 更新表

问题描述

我有一些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 更新表。如何实现此功能或实现此功能的最佳方法是什么?

标签: postgresql

解决方案


您可以使用 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;

推荐阅读