我正在尝试更新表中的标识序列,但遇到语法错误。
这项工作:
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
语句中的子查询设置值?
注意:我的表敌人在默认列中没有nextval('somesequence')
,而是一个标识列,因此不能直接更新序列。
您不能在该位置使用子查询。最简单的解决方案是首先运行查询,然后运行适当的ALTER TABLE
。如果你坚持在一个单独的声明中做这件事,可以使用类似的东西
SELECT setval(
pg_get_serial_sequence(
'"ApiResourceScopes"',
'Id'
),
(select coalesce(max("Id"), '0')
FROM public."ApiResourceScopes")
);