【发布时间】:2022-04-25 21:12:28
【问题描述】:
尝试在 Citus 上以编程方式更新一些日期,我总是得到
[0A000] ERROR: STABLE functions used in UPDATE queries cannot be called with column references
来自类似的查询
UPDATE date_container SET json_value = json_value::jsonb - 'created_time' || CONCAT('{"created_time":"',
rtrim(replace(to_timestamp(((json_value->>'created_time')::numeric/1000000))::text,' ','T'), '-05'),'"}')::jsonb
理论上所有方法都是immutable,但由于某些原因它说它的某些部分不是。
我还尝试了以下所有方法: PostgreSQL: how to convert from Unix epoch to date?
【问题讨论】:
-
问题是从
timestamp with time zone到text的隐式转换,因为您使用它作为replace的参数。 -
@LaurenzAlbe,有解决方案的想法吗?我尝试了很多可能的组合
-
我试图理解这个查询,但这对我来说毫无意义。
-应该做什么?,尝试将字符串created_time与jsonb连接起来是什么? -
@LaurenzAlbe 的目标是更新 jsonb
created_time字段。为此,据我了解,我必须将其删除并通过该代码再次插入。
标签: postgresql immutability citus