Postgresql Postgres更新语句函数
我正在尝试编写一个函数来更新postgres。试试这个版本:Postgresql Postgres更新语句函数,postgresql,Postgresql,我正在尝试编写一个函数来更新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 := coales
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;$$;