我的用户
表包含一列类型为json
的metadata
列。
现在,我想要添加新的元数据到一个用户,并保留现有的值。
所以我使用||
运算符来合并两个JSON对象:
UPDATE users
SET metadata = metadata::jsonb || '{"test": true}'::jsonb
WHERE id=...
RETURNING *;
如果已经存在一些元数据,一切工作都很正常。但是,当先前的值为 NULL
时,更新操作将无法正常进行。更新后的 metadata
仍然是 NULL
。
如何改进查询,使其在先前的值为 NULL
时设置新的 JSON 对象,否则合并先前和新的值?
coalesce(metadata, '{}')::jsonb
- tom