Here's the the doc you were looking for
.
您使用的语法是用于文字的——您之所以出现错误,是因为您缺少括号周围的单引号,而整个内容应该是
text
在它变成
int[]
大堆
Demo at db<>fiddle:
update public."Booking" b set "LinkedBookings" = ('{'||"Id"::text||'}')::int[]
returning *,pg_typeof("LinkedBookings");
|
身份证件
|
链接预订
|
第页类型
|
|
1.
|
{1}
|
整数[]
|
|
2.
|
{2}
|
整数[]
|
|
3.
|
{3}
|
整数[]
|
另一种语法是将值包装在中
ARRAY[]
,已经指出。您可以添加显式强制转换以确保:
update public."Booking" b set "LinkedBookings" = (ARRAY["Id"])::int[];
如果你只是
"Id"
以其他形式提供,可以在其他地方保存数组包装,可以考虑设置
"LinkedBookings"
作为一个
generated column
-这样你就不需要不断地用periodical刷新表格
update
.
alter table public."Booking" drop column if exists "LinkedBookings";
alter table public."Booking" add column "LinkedBookings" int[]
generated always as ((ARRAY["Id"])::int[]) stored;
--no update necessary
select *,pg_typeof("LinkedBookings") from public."Booking";
|
身份证件
|
链接预订
|
第页类型
|
|
1.
|
{1}
|
整数[]
|
|
2.
|
{2}
|
整数[]
|
|
3.
|
{3}
|
整数[]
|
如果您正在运行此更新以预填充列,并且计划稍后对其进行修改,请不要进行
generated
因为这些不能直接修改。它们只能通过修改它们所依赖的值来重新生成。