Postgresql - 将子查询与更改序列表达式一起使用
是否可以在 PostgreSQL 的 alter 表达式中使用子查询?
我想根据主键列值更改序列值。
我尝试使用以下表达式,但它不会执行。
alter sequence public.sequenceX restart with (select max(table_id)+1 from table)
Is it possible to use subqueries within alter expressions in PostgreSQL?
I want to alter a sequence value based on a primary key column value.
I tried using the following expression, but it wouldn't execute.
alter sequence public.sequenceX restart with (select max(table_id)+1 from table)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不相信你可以这样做,但你应该能够使用 setval 函数方向,这就是 alter 所做的。
false 将使其返回下一个序列号,与给定的序列号完全相同。
I don't believe you can do it like that but you should be able to use the setval function direction which is what the alter does.
The false will make it return the next sequence number as exactly what is given.
此外,如果您有混合大小写的对象名称并且您收到如下错误:
...使用 regclass 的以下版本应该很有用:
In addition if you have mixed case object names and you're getting an error like this:
... the following version using regclass should be useful: