我正在更新PostgreSQL数据库中的一行,它说它找不到x列。问题是pg试图找到的列实际上是jsonb_set函数中新值的一个参数,所以我已经束手无策了。
很难解释,所以我包含了查询和它抛出的错误。
尝试添加引号,双引号,括号,内外。。。不起作用。
UPDATE public.sometable
SET somecolumn = jsonb_set(somecolumn, '{firstKey, secondKey}', someInputString), update_date=NOW(), update_username="[email protected]"
WHERE id=1
RETURNING *
我希望返回正在更新的行的值,而不是:
ERROR: column "someInputString" does not exist
LINE 1: ...n = jsonb_set(somecolumn , '{firstKey, secondKey}', someInputString)...
最佳答案
必须传递一个有效的json值作为函数的第三个参数:
UPDATE public.sometable
SET
somecolumn = jsonb_set(somecolumn, '{firstKey, secondKey}', '"someInputString"'),
update_date = now(),
update_username = '[email protected]'
WHERE id = 1
RETURNING *
注意,我猜
update_username
是一个文本,所以您应该对一个简单的文本使用单引号。Db<>fiddle.