对于serial
Postgresql < 10 中使用的列,我们按其名称管理序列。我们能够通过以下方式重置序列:
SELECT setval('table_id_seq', (SELECT MAX(id) FROM table));
从版本 10 开始,使用标识列,无需使用序列名称。那很好。
ALTER TABLE table ALTER COLUMN id RESTART WITH 1000;
如何在max(id)
不知道序列名称的情况下将标识列设置为?
据我从ALTER TABLE 语法中可以看出,没有办法让子查询来计算序列的开始。
我想写一些类似的东西:
ALTER TABLE table ALTER COLUMN id RESTART WITH (SELECT MAX(id) FROM table);