我有一个 JSONB 列,其中包含如下 JSON 数据
[
{
"url": "https://example.com",
"vendor": "County"
}
]
当我尝试使用“for update”进行查询时
select
id,
updated_at,
jsonb_array_elements(data_src)->>'url' as vendor,
in_use
from
myschema.table a
where
data_src @> '[{"vendor": "County"}]' limit 1 for update;
我收到以下错误
ERROR: FOR UPDATE is not allowed with set-returning functions in the target list
有没有办法解决这个问题?或者我需要修改 JSON 格式,这样jsonb_array_elements
它就不会被使用了?
重写您的查询:
现在集合返回函数
jsonb_array_elements()
位于FROM
子句中,这是它应该在的位置。除非您打算删除该行或者修改唯一键或主键列,否则
FOR NO KEY UPDATE
是正确的锁级别。