postgresql - Postgres 更新语句函数
问题描述
我正在尝试编写一个函数来更新 postgres。
解决方案
试试这个版本:
CREATE OR REPLACE FUNCTION jsonb_upsert(val1 jsonb, val2 jsonb) RETURNS jsonb
LANGUAGE plpgsql AS
$$DECLARE
v_key text;
v_value jsonb;
BEGIN
/* replace NULL with empty "jsonb" */
val1 := coalesce(val1, JSONB '{}');
/* don't replace non-objects */
IF coalesce(jsonb_typeof(val2), 'null') = 'object' THEN
FOR v_key, v_value IN SELECT key, value FROM jsonb_each(val2) LOOP
val1 := jsonb_set(val1, ARRAY[v_key], v_value);
END LOOP;
END IF;
RETURN val1;
END;$$;
推荐阅读
- java - 如何循环我的 Java 税收计算器,以便在引发异常后重新启动?
- c# - 在我的 ASP.NET MVC 5 项目的 _Layout.cshtml 文件中获取 System.NullReferenceException
- javascript - 在角度项目上运行 npm install 时出错
- reactjs - 有没有办法在解构后获得论点?
- wordpress - WordPress 中的交互式 SVG
- javascript - SVG - 当我使用 setAttribute 时工具提示背景消失
- php - 有没有办法通过 PHP 在 DreamHost 上运行可执行文件?
- javascript - 在不使用 testid 的情况下测试 Material ui Select 组件
- python - 如何使用 pymongo 优化我的 mongodb 查询?
- opencv - 如何正确使用 OpenCV triangulatePoints 和 GPS 数据?