我正在更新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.

08-28 10:56