Postgresql

刪除表中的所有行後,如何將序列類型重置回 0?

  • March 4, 2022

我以前問過這個問題,有人在 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<>在這裡擺弄

看:

引用自:https://dba.stackexchange.com/questions/308316