我正在尝试寻找一种方法来使Postgres中的以下查询更通用,以便可以将下面SELECT语句的结果直接用于ALTER table语句中。
SELECT MAX(id) + 1 From Table_1;
ALTER TABLE Table_1 ALTER COLUMN id RESTART WITH 935074;
现在,我运行第一个查询以获取Max(id)+1值,然后在ALTER查询中替换它。有没有办法存储SELECT的结果并只在ALTER语句中使用变量?
这里是一种方法:
select setval(pg_get_serial_sequence('Table_1', 'id'), coalesce(max(id),0) + 1, false)
from Table_1;
理论上:
pg_get_serial_sequence()
返回给定表和列的序列名称set_val()
可用于重置序列select
中,该表为您提供表中id
的当前最大值(如果表为空,则为1)