我尝试使用jsonb_set
更改Postgres表中jsonb对象的单个属性。
我正在使用WITH random_string AS
将变量random_string
设置为一个随机的十六进制值,然后将该字符串传递到我的UPDATE
查询中。
这是我正在使用的代码:
WITH random_string AS (SELECT substr(md5(random()::text), 0, 25)::varchar)
UPDATE
teams
SET
profile = jsonb_set(profile, '{api_key}', random_string)
WHERE
team_id="abc123";
我得到的错误似乎认为我正在尝试访问一个不存在的列,因为这是您通常引用列的方式。
Postgres query failed, PostgresPlugin query failed to execute: error: column "random_string" does not exist
问题:如何在jsonb_set函数中使用random_string变量来更新此属性?
1条答案
按热度按时间yyyllmsg1#
有三个问题。首先,
WITH
语句给出了一个类似于表的结果,而不是一个变量。定义一个具有单列的表,并在UPDATE
的FROM
子句中使用它的名称。其次,jsonb_set()
的第三个参数是jsonb
,使用to_jsonb()
。最后,正确的文本文字用单引号括起来'abc123'
。