我创建了一个序列
CREATE SEQUENCE CA_SEQUENCE_NUMBER_SEQ
start with 9000000000
increment by 1
nocycle
nocache;
已分配和开始值是相同的数字。请建议我可能是什么原因
此图像详细信息来自SYSSEQUENCES数据字典视图
答案 0 :(得分:1)
我认为序列已被改变。 E.g。
CREATE SEQUENCE CA_SEQUENCE_NUMBER_SEQ AS DECIMAL(31,0) start with 7000000000;
values nextval for CA_SEQUENCE_NUMBER_SEQ;
ALTER SEQUENCE CA_SEQUENCE_NUMBER_SEQ restart with 9000000000;
然后SYSCAT.SEQUENCES
会显示
select NEXTCACHEFIRSTVALUE from syscat.sequences where seqname = 'CA_SEQUENCE_NUMBER_SEQ'"
NEXTCACHEFIRSTVALUE
---------------------------------
7000000000.
1 record(s) selected.
但是在再次呼叫values nextval for CA_SEQUENCE_NUMBER_SEQ
之后,NEXTCACHEFIRSTVALUE将更新
values nextval for CA_SEQUENCE_NUMBER_SEQ;
1
---------------------------------
9000000000.
1 record(s) selected.
select NEXTCACHEFIRSTVALUE from syscat.sequences where seqname = 'CA_SEQUENCE_NUMBER_SEQ'"
NEXTCACHEFIRSTVALUE
---------------------------------
9000000020.
1 record(s) selected.
答案 1 :(得分:1)
似乎创建语句发生在前一段时间,因为从序列中生成了> 700,000个数字。可以通过发出ALTER SEQUENCE
语句从任何地方重新启动序列,例如:
ALTER SEQUENCE CA_SEQUENCE_NUMBER_SEQ RESTART 7000000000
您只需使用CREATE SEQUENCE
,就可以将其指回RESTART
语句中指定的起始值:
ALTER SEQUENCE CA_SEQUENCE_NUMBER_SEQ RESTART
以下是文档的相关部分:
>>-ALTER SEQUENCE--sequence-name--------------------------------> .-----------------------------------------------. V (1) | >----------+-RESTART--+------------------------+-+-+----------->< | '-WITH--numeric-constant-' |
- RESTART
- 重新启动序列。如果未指定numeric-constant,则序列将以隐式或显式指定的值重新启动,作为最初创建序列的CREATE SEQUENCE语句的起始值。
- WITH numeric-constant
- 使用指定值重新启动序列。此值可以是任何正值或负值,可以分配给与序列关联的数据类型的列(SQLSTATE 42815),小数点右侧不存在非零数字(SQLSTATE 428FA)。
< / DL>