为啥 Netezza 序列下一个值给出随机值?

Posted

技术标签:

【中文标题】为啥 Netezza 序列下一个值给出随机值?【英文标题】:Why Netezza Sequence next value giving random values?为什么 Netezza 序列下一个值给出随机值? 【发布时间】:2013-01-31 14:14:24 【问题描述】:

顺序:

CREATE SEQUENCE STG.TEMP_PPC_SEQ AS BIGINT
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    MAXVALUE 2147483647
    NO CYCLE;

选择查询:

SELECT TPLCST.code,NEXT VALUE FOR STAGING.STG.TEMP_PPC_SEQ
FROM TEMP_PRODUCT_LIFE_CYCLE_STATUS_TYPE TPLCST

结果:

CODE    NEXTVAL
30  8
80  10008
40  30008
50  40015
10  40016
20  20008

我正在随机获取 nextval。我怎样才能使它们连续?

【问题讨论】:

【参考方案1】:

它们是随机的,因为 Netezza 是大规模并行的,每个 SPU 都有自己的序列值块。

【讨论】:

这完美地回答了它。序列不是获得顺序的方法。就是得到一个唯一的标识符,应该完全不关心值是什么,只要是唯一的就行了。【参考方案2】:

您可以使用 Row_number() over(order by ) 来获取序列值

请往下看

http://www.enzeecommunity.com/message/8914

http://www.enzeecommunity.com/message/3272

【讨论】:

【参考方案3】:

您是否正在尝试创建一个自动增量列? Netezza 不这样做。此外,如果您使用序列生成器,它将是唯一的,但不是连续的——序列中会有漏洞。

【讨论】:

以上是关于为啥 Netezza 序列下一个值给出随机值?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Hibernate 不使用序列表中的下一个序列值?

如何在 Netezza 中将整数字段转换为日期?

为啥下面的代码块给出输出“ZZZ(一些垃圾值)”而不是“ZZ(一些垃圾值)”

python中怎么设置随机产生数字

使用存储过程将值插入到 netezza

如何使用 Python 生成大于指定值的随机数?