直接从 JSON 对象更新 Postgresql 表

use*_*938 5 postgresql json

我用

select to_json(host) from host where id=3
Run Code Online (Sandbox Code Playgroud)

从我的 postgreSQL 数据库查询数据,结果如下:

{"id":3,"project_id":1,"name":"a","mac":"abc","info":"x"}
Run Code Online (Sandbox Code Playgroud)

更改应用程序中的数据后,我想更新表。

有没有“json”方式来做到这一点?不做普通的更新,比如

update host set project_id=1, name='a', mac='abc',info='x' where id=1;
Run Code Online (Sandbox Code Playgroud)

Clo*_*eto 5

jsonb_populate_record子句中使用update from

update host
set
    (project_id, name, mac, info) =
    (j.project_id, j.name, j.mac, j.info)
from jsonb_populate_record ( null::host,
    '{"id":1,"project_id":1,"name":"a","mac":"abc","info":"x"}'::jsonb
) j
where host.id = j.id
Run Code Online (Sandbox Code Playgroud)