Postgresql
刪除表中的所有行後,如何將序列類型重置回 0?
我以前問過這個問題,有人在 db fiddle 上發布了一個非常有用的答案。這對我來說非常有效。但是,現在我想問一個新的(相關)問題:
假設我清除了表中的所有行(即在 db fiddle 範例中,通過執行“從 id > 0 的水果中刪除”來刪除蘋果和橙色行)。如果我插入另一個水果,如西瓜,id 將從 4 開始,而不是 1。如何強制 id 類型重置回 0,以便下一個插入將具有 id=1 ?
簡單(假設您知道序列名稱):
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<>在這裡擺弄
看: