我有一个
工作项
具有以下架构的表
+---------+----------+---------------+
| id | data | data_type |
+------------------------------------+
| | | |
| | | |
| | | |
+---------+--------------------------+
以及
文件类型
具有以下架构的表:
+---------+----------+
| id | name |
+--------------------+
| | |
| | |
| | |
+---------+-----------
数据列是
json格式
具有
类型
字段。这是一个列数据示例:
{"Id":"5d35a41f-3e91-4eda-819d-0f2d7c2ba55e","WorkItem":"24efa9ea-4291-4b0a-9623-e6122201fe4a","Type":"Tax Document","Date":"4/16/2009"}
我需要更新数据列
data_type
列值为
文档模型
和
类型
字段值与
文件类型
包含文档类型id和文档类型名称的json对象的表。像这样的东西
{"id": "<doc_type_id>", name: "<doc_type_name>"}
.
我试图通过执行以下查询来执行此操作:
update wf.work_item wi
set data = jsonb_set(data::jsonb, '{Type}',(SELECT jsonb_build_object('id', dt.id, 'name', dt.name) FROM wf.document_type as dt WHERE wi.data ->> 'Type'::text = dt.name::text), false)
where wi.data_type = 'DocumentModel';
上面的脚本运行时没有错误。然而,它所做的是不需要的,它改变了
数据
和
数据类型
列到
无效的
而不是更新
数据
列。
我的剧本有什么问题?或者你能建议一个更好的选择来做一个想要的更新吗?