我正在尝试更新PG10中的jsonb
列。我注意到只有在该列中存在给定记录的某些值时,以下内容才有效。
UPDATE public.mytable SET config = jsonb_set (
config, '{"data1"}', '{
"text" : "my text"
}', TRUE)
WHERE id = 1234;
仅当列config
不为null时,更新成功。我执行语句时没有看到任何错误。
如果给定记录的此列为空,我需要这样做
UPDATE public.mytable SET config = '{
"data1" : {
"text" : "my text"
}
}'
WHERE id = 1234;
所以我当前的策略是检查非空值,并使用第一种或第二种方法更新列值。这是正确的方法吗?为什么在使用jsonb_set
时值没有更新?
答案 0 :(得分:0)
使用COALESCE(config,'{}')
UPDATE mytable SET config = jsonb_set (
COALESCE(config,'{}'),'{"data1"}', '{
"text" : "my text"
}', TRUE)
WHERE id = 1234;