plpg sql функция добавления значения ключа в JSONB - PullRequest
0 голосов
/ 25 марта 2020

Какую функцию plpg sql вы бы написали, чтобы добавить элемент значения ключа в столбец JSONB?

+--------+---------------+-------------------+
| id[PK] | name(varchar) |   value(JSONB)    |
+--------+---------------+-------------------+
|      1 | test          | {"key1":"value1"} |
+--------+---------------+-------------------+

Я использую этот запрос SQL, чтобы добавить новый элемент в JSONB:

UPDATE output_controlling_variables SET value = value || '{"key1" : "value1"}' WHERE id = 1

Какой будет функция plpg sql, чтобы сделать это, взяв ключ (str) и значение (str) в качестве аргументов? Я пытаюсь с этим:

CREATE OR REPLACE FUNCTION add_id(test_id varchar,test_name varchar)
BEGIN
    --RETURN QUERY EXECUTE
    QUERY EXECUTE
    format('UPDATE output_controlling_variables SET value = value || %s WHERE id = 4')
END;
$$ LANGUAGE plpgsql;

Должен ли я отформатировать '{"key1" : "value1"}' часть?

1 Ответ

1 голос
/ 25 марта 2020

Вы можете использовать jsonb_build_object(), чтобы построить JSON из параметров и добавить его к значению в столбце. Также нет необходимости в Dynami c SQL, просто используйте оператор UPDATE.

...
UPDATE output_controlling_variables
       SET value = value || jsonb_build_object(test_id, test_name)
       WHERE id = 4;
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...