使用子查询在 Postgres 中更改 TABLE
ALTER TABLE in Postgres with a subquery
我正在尝试更新我的 table 中的标识序列,但出现语法错误。
这个有效:
ALTER TABLE "ApiResourceScopes" ALTER COLUMN "Id"
RESTART SET START 145
这行不通:
ALTER TABLE "ApiResourceScopes" ALTER COLUMN "Id"
RESTART SET START (
select coalesce(max("Id"), '0') + 1 as "Id"
FROM public."ApiResourceScopes"
)
如何在 ALTER TABLE
语句中使用子查询设置值?
注意:我的 table 敌人在默认列中没有 nextval('somesequence')
,而是标识列,因此直接更新序列不是一个选项。
你不能在那个地方使用子查询。最简单的解决方案是首先 运行 查询,然后是适当的 ALTER TABLE
。如果您坚持在一条语句中执行此操作,请使用类似
的内容
SELECT setval(
pg_get_serial_sequence(
'"ApiResourceScopes"',
'Id'
),
(select coalesce(max("Id"), '0')
FROM public."ApiResourceScopes")
);
我正在尝试更新我的 table 中的标识序列,但出现语法错误。
这个有效:
ALTER TABLE "ApiResourceScopes" ALTER COLUMN "Id"
RESTART SET START 145
这行不通:
ALTER TABLE "ApiResourceScopes" ALTER COLUMN "Id"
RESTART SET START (
select coalesce(max("Id"), '0') + 1 as "Id"
FROM public."ApiResourceScopes"
)
如何在 ALTER TABLE
语句中使用子查询设置值?
注意:我的 table 敌人在默认列中没有 nextval('somesequence')
,而是标识列,因此直接更新序列不是一个选项。
你不能在那个地方使用子查询。最简单的解决方案是首先 运行 查询,然后是适当的 ALTER TABLE
。如果您坚持在一条语句中执行此操作,请使用类似
SELECT setval(
pg_get_serial_sequence(
'"ApiResourceScopes"',
'Id'
),
(select coalesce(max("Id"), '0')
FROM public."ApiResourceScopes")
);