是否可以在 PostgreSQL 的 alter 表达式中使用子查询?
我想根据主键列值更改序列值。
我尝试使用以下表达式,但它不会执行。
alter sequence public.sequenceX restart with (select max(table_id)+1 from table)
是否可以在 PostgreSQL 的 alter 表达式中使用子查询?
我想根据主键列值更改序列值。
我尝试使用以下表达式,但它不会执行。
alter sequence public.sequenceX restart with (select max(table_id)+1 from table)
我不相信你可以那样做,但你应该能够使用 alter 所做的 setval 函数方向。
select setval('sequenceX', (select max(table_id)+1 from table), false)
false 将使它返回给定的下一个序列号。
In addition if you have mixed case object names and you're getting an error like this:
ERROR: relation "public.mytable_id_seq" does not exist
... the following version using regclass should be useful:
select setval('"public"."MyTable_Id_seq"'::regclass, (select MAX("Id") FROM "public"."MyTable"))