postgreSQL Добавляем новый ключ со значением, если он не существует, и редактируем его, если он существует - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь запустить следующее, но он не обновляет столбцы со значениями NULL или столбцы, у которых нет этого ключа:

update A a set 
a.jsonbcolumn = ('{"key":' 1 '}')

Я использую postgres 9.6.3, и jsonb_set у меня не работает. Любой совет?

Спасибо

1 Ответ

0 голосов
/ 31 октября 2018

jsonb_set() это путь:

update a
  set jsonbcolumn = jsonb_set(jsonbcolumn, '{key}', '1');

Если он не создает ключ, возможно, это значение столбца NULL, а не пустой JSON. В этом случае используйте coalesce():

update a
  set jsonbcolumn = jsonb_set(coalesce(jsonbcolumn,'{}'), '{key}', '1');

Онлайн пример: https://rextester.com/MSU66547

...