PostgreSQL的序列
问题描述:
我测试的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显得过于共同的名字 - 如果我没有记错 - 用户共享同一个模式在那里,所以我认为人们只滚领先你的序列 –