首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL序列nextval()奇怪行为

PostgreSQL序列nextval()奇怪行为
EN

Stack Overflow用户
提问于 2017-06-02 12:32:58
回答 1查看 1.8K关注 0票数 1

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

创建一个序列

代码语言:javascript
复制
CREATE SEQUENCE counter_seq;
ALTER SEQUENCE counter_seq RESTART 9223372036854775805;

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

代码语言:javascript
复制
SELECT nextval('counter_seq');

结果是9223372036854776000超出了BIGINT的范围!

序列本身似乎是正确更新的(在使用ERROR: nextval: reached maximum value of sequence "counter_seq" (9223372036854775807)进行了几次选择之后,就会失败),但是nextval的结果在运行时是不正确的。

然后,我尝试将序列设置为低得多:

代码语言:javascript
复制
ALTER SEQUENCE counter_seq RESTART 5223372036854775805;
SELECT nextval('counter_seq');

但结果是:

代码语言:javascript
复制
5223372036854776000

在将序列值降到5000000000000000之前,我无法获得可靠的行为。

这是postgresql错误还是sqlfiddle?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-02 12:41:44

看起来不是SQLFiddle错误就是pgsql9.3问题。我在本地9.6上没有得到相同的结果,在http://rextester.com/COJS32891上也没有出现这样的错误

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44329085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档