json - Postgres - json中的增量值
问题描述
您好,我有 JSON 类型的列,我在其中存储例如 '{ "foo": 0 }' 现在我想编写触发器,它将是特定操作的增量值。我有问题,因为如果更新值不存在,我不知道如何增加或设置 0 值。我试图从这里编写类似于代码的函数:https ://stackoverflow.com/a/44563662/10999632但这是不可能的,因为:
ERROR: function jsonb_set(json, unknown, jsonb) does not exist
LINE 2: SET payload = jsonb_set(payload, '{bar}', (COALESCE(payload-...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
解决方案
显然,您的列payload
被定义为json
,而不是jsonb
。
您需要将列转换jsonb
为才能使用jsonb_set()
SET payload = jsonb_set(payload::jsonb, '{bar}', ...)
推荐阅读
- python - pandas 按数据框绘制分组
- reactjs - “npm start”命令突然停止使用包含旧项目和新创建项目的“create-react-app”项目文件夹
- java - 调用内部类的重绘不会触发 paint() 实际上什么都不做
- java - 如何在一个应用中结合所有 Firebase ML 套件 API?
- angular - 为我自己的角度包使用其他包
- math - PCA 的主要成分何时构成数据集的基础?
- regex - 如何通过正则表达式分隔的拆分函数将VBA中的字符串拆分为数组
- python - 从 Python 调用时与 openssl 的结果不一致
- ajax - Webix:更新树形菜单数据的 AJAX 响应
- constraints - 基于 System Verilog 中运行时数据的加权随机化