2015-06-02 44 views
2

Postgre中的序列可能會跳過一個Id嗎?例如,最後一個id的序列是5,我想將7設置爲正在使用,這樣生成的下一個id將是6,然後是8?避免在PostgreSQL 9序列中使用單個數字

+2

不,你不能告訴一個序列之間跳過值。你只能告訴它_continue_具有特定的值。 –

+0

詳細說明:由於一個序列只具有「下一個值」的概念,所以在將來不能標記任何值。所以當它在7時,你可以'nextval'來獲得(並放棄)8,但是你不能說「當你到達時跳過42,但是直到那時繼續正常進行」。但是,您可以說'setval('my_seq',43)'從43開始。 –

+3

請注意,關注序列生成值的具體細節通常會指示應用程序中的設計問題。在很多情況下,從不潔淨的重新啓動到事務中止,PostgreSQL都可以將序列值*丟棄。不能保證序列將進入1,2,3,4 ...。就您的應用而言,它可能會產生1,3,9,44,72。 –

回答

2

對於一次跳躍,

SELECT nextval('sequence_name'); 

這將刻錄ID和遞增的順序。

僅適用於脣上做,

CREATE SEQUENCE sequence_name INCREMENT BY 2;