PostgreSQL序列nextval()奇怪的行为

时间:2017-06-02 12:32:59

标签: postgresql

我正在测试postgresql序列(使用http://sqlfiddle.com和PostgreSQL 9.3我目前没有在本地设置PostgreSQL),但我看到了奇怪的行为。

创建序列

CREATE SEQUENCE counter_seq;
ALTER SEQUENCE counter_seq RESTART 9223372036854775805;

然后从序列中选择下一个值:

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?

1 个答案:

答案 0 :(得分:1)

看起来像SQLFiddle错误或pgsql 9.3问题。我在本地9.6上没有得到相同的结果,也没有在http://rextester.com/COJS32891

上给出这样的错误