这是如此简单的查询.我需要更新预订表',LinkedBookings列(int数组数据类型),它自己的ID.下面的查询没有为我工作.
update public."Booking" b set "LinkedBookings" = {"Id"}
字符串
上面是给下面的错误,
SQL Error [42601]: ERROR: syntax error at or near "{"
型
我搜索了整个互联网和postgres文档,找不到任何合适的简单查询。我可以理解有一种方法可以写一个Pg函数。而不是做这么大的事情,没有任何简单的查询吗?
2条答案
按热度按时间w1e3prcc1#
假设
LinkedBookings
是一个数组列,并假设您希望将其设置为仅包含每行的Id
的数组,则正确的SQL
应该是>>字符串
v1l68za42#
你要找的医生来了。
你使用的语法是用于字面量的--你得到错误是因为你缺少了方括号周围的单引号,整个东西应该是一个
text
,然后才能成为一个int[]
数组。Demo at db<>fiddle:字符串
| ID|联系我们|pg_typeof|
| --|--|--|
| 1 |{1}下一页|integer[]|
| 2 |{1}、{2}| integer[]|
| 3 |{1}第三节|integer[]|
另一种语法是将值 Package 在
ARRAY[]
中,已经指出了。您可以添加显式转换以确保:型
如果您只是以另一种形式提供
"Id"
,以在其他地方保存数组 Package ,则可以考虑将"LinkedBookings"
设置为generated column--这样就不需要定期刷新update
表。型
| ID|联系我们|pg_typeof|
| --|--|--|
| 1 |{1}下一页|integer[]|
| 2 |{1}、{2}| integer[]|
| 3 |{1}第三节|integer[]|
如果您正在运行此更新以预填充列,并且您计划稍后修改它,请不要将其设置为
generated
,因为这些列不能直接修改。它们只能通过修改它们所依赖的值来重新生成。