Dan*_*xis 42 sql postgresql subquery sequence alter
我的问题很简单.
是否可以在PostgreSQL中的alter表达式中使用子查询?
我想根据主键列值更改序列值.
我尝试使用以下表达式,但它不会执行.
alter sequence public.sequenceX restart with(从表中选择max(table_id)+1)
提前致谢
Art*_*mas 75
我不相信你可以这样做,但你应该能够使用set的功能方向,这是alter的功能.
select setval('sequenceX', (select max(table_id)+1 from table), false)
Run Code Online (Sandbox Code Playgroud)
false将使它返回下一个序列号,正如给出的那样.
另外,如果您混合使用大小写对象名称,并且会收到如下错误:
ERROR: relation "public.mytable_id_seq" does not exist
Run Code Online (Sandbox Code Playgroud)
...以下使用regclass的版本应该很有用:
select setval('"public"."MyTable_Id_seq"'::regclass, (select MAX("Id") FROM "public"."MyTable"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14741 次 |
| 最近记录: |