use*_*636 4 postgresql postgresql-10
我之前问过这个问题,有人在 db fiddle 上发布了一个非常有用的答案。这对我来说非常有效。但是,现在我想问一个新的(相关)问题:
假设我清除了表中的所有行(即在数据库小提琴示例中,通过执行“从 id > 0 的水果中删除”来删除苹果和橙色行)。如果我插入另一种水果(如西瓜),id 将从 4 开始,而不是 1。如何强制 id 类型重置回 0,以便下一次插入的 id=1 ?
简单(假设您知道序列名称):
SELECT setval('fruits_id_seq', 1, false);
Run Code Online (Sandbox Code Playgroud)
或者:
ALTER SEQUENCE payments_id_seq RESTART WITH 0;
Run Code Online (Sandbox Code Playgroud)
安全(您不知道序列名称或不确定表是否为空):
SELECT setval(pg_get_serial_sequence('fruits', 'id')
, COALESCE(max(id) + 1, 1)
, false)
FROM fruits;
Run Code Online (Sandbox Code Playgroud)
db<>在这里摆弄
当然,在并发写入负载下这仍然不安全 - 您根本不应该打乱这样的顺序。
看:
归档时间: |
|
查看次数: |
8380 次 |
最近记录: |