我測試的PostgreSQL序列(使用http://sqlfiddle.com在PostgreSQL 9.3我沒有在時刻一個PostgreSQL安裝在本地)nextval()會奇怪的行爲,但我看到奇怪的行爲。PostgreSQL的序列
創建序列
CREATE SEQUENCE counter_seq;
ALTER SEQUENCE counter_seq RESTART 9223372036854775805;
然後選擇fromt序列的下一個值:
SELECT nextval('counter_seq');
結果是9223372036854776000
這是BIGINT範圍之外!?!?
序列本身似乎更新正確(在ERROR: nextval: reached maximum value of sequence "counter_seq" (9223372036854775807)
幾次選擇後它會失敗),但nextval
的結果在運行時不正確。
我又試圖順序設置爲低得多:
ALTER SEQUENCE counter_seq RESTART 5223372036854775805;
SELECT nextval('counter_seq');
但結果是:
5223372036854776000
,直到我的序列值下降到5000000000000000
我不能得到可靠的行爲。
這是PostgreSQL錯誤或sqlfiddle?
其他會議不能同時滾動序列? –
可能,但我做了不同的序列名稱sqlfiddle測試,它給了相同的確切的結果。所以我認爲可以安全地假設他們身上有什麼東西被打破了。 –
** ** counter_seq顯得過於共同的名字 - 如果我沒有記錯 - 用戶共享同一個模式在那裏,所以我認爲人們只滾領先你的序列 –