带有子查询的Postgres中的ALTER 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语句中的子查询设置值?

注意:我的表敌人在默认列中没有nextval('somesequence'),而是一个标识列,因此不能直接更新序列。

您不能在该位置使用子查询。最简单的解决方案是首先运行查询,然后运行适当的ALTER TABLE。如果你坚持在一个单独的声明中做这件事,可以使用类似的东西

SELECT setval(
pg_get_serial_sequence(
'"ApiResourceScopes"',
'Id'
),
(select coalesce(max("Id"), '0')
FROM public."ApiResourceScopes")
);

相关内容

  • 没有找到相关文章

最新更新