user1068636 Asked: 2022-03-05 12:16:38 +0800 CST2022-03-05 12:16:38 +0800 CST 2022-03-05 12:16:38 +0800 CST 删除表中的所有行后,如何将序列类型重置回 0? 772 我以前问过这个问题,有人在 db fiddle 上发布了一个非常有用的答案。这对我来说非常有效。但是,现在我想问一个新的(相关)问题: 假设我清除了表中的所有行(即在 db fiddle 示例中,通过执行“从 id > 0 的水果中删除”来删除苹果和橙色行)。如果我插入另一个水果,如西瓜,id 将从 4 开始,而不是 1。如何强制 id 类型重置回 0,以便下一个插入将具有 id=1 ? postgresql postgresql-10 1 个回答 Voted Best Answer Erwin Brandstetter 2022-03-05T13:01:34+08:002022-03-05T13:01:34+08:00 简单(假设您知道序列名称): SELECT setval('fruits_id_seq', 1, false); 或者: ALTER SEQUENCE payments_id_seq RESTART WITH 0; 安全(您不知道序列名称或不确定表是否为空): SELECT setval(pg_get_serial_sequence('fruits', 'id') , COALESCE(max(id) + 1, 1) , false) FROM fruits; db<>在这里摆弄 看: 不同步时如何重置 Postgres 的主键序列? Postgres 手动更改序列 如何修复所有重复键值违反唯一约束
简单(假设您知道序列名称):
或者:
安全(您不知道序列名称或不确定表是否为空):
db<>在这里摆弄
看: