Oracle Sequence问题

时间:2014-09-26 06:55:57

标签: sql oracle

我有一个序列在2000左右时具有巨大的价值差异,而使用Merge ..我在定义我的序列定义时最初有一个20的缓存。我将我的序列重新定义为

CREATE SEQUENCE  "DMODS"."ORDER_SEQ" 
       MINVALUE 1 
       MAXVALUE 9999999999 
       INCREMENT 1               
       START WITH 1 
       NOCACHE 
       ORDER 
       NOCYCLE 

我注意到序列的值现在在同一天发生的插入/更新的平均值上变化了2000 ..你能不能对此有所了解?

1 个答案:

答案 0 :(得分:1)

引用Tom Kyte(https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:530735152441

序列永远不会产生无间隙的数字序列。 如果有人调用seq.nextval并且没有在某处插入值(或者插入它 然后回滚他们的交易)这个号码是GONE。 序列是数据库对象,可能像所有内容一样从共享池中老化 否则 - 它不会因数据库关闭而产生间隙。 你永远不应该指望产生任何甚至接近无间隙的序列 数字序列。它们是一种高速,极易扩展的多用户方式 为表格生成代理键。

基本上,它不是问题,他们做他们做的事情。如果您的主键需要连续的数字序列,则需要自己生成(max + 1)

戴夫