我有一个序列在2000左右时具有巨大的价值差异,而使用Merge ..我在定义我的序列定义时最初有一个20的缓存。我将我的序列重新定义为
CREATE SEQUENCE "DMODS"."ORDER_SEQ"
MINVALUE 1
MAXVALUE 9999999999
INCREMENT 1
START WITH 1
NOCACHE
ORDER
NOCYCLE
我注意到序列的值现在在同一天发生的插入/更新的平均值上变化了2000 ..你能不能对此有所了解?
答案 0 :(得分:1)
引用Tom Kyte(https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:530735152441)
序列永远不会产生无间隙的数字序列。 如果有人调用seq.nextval并且没有在某处插入值(或者插入它 然后回滚他们的交易)这个号码是GONE。 序列是数据库对象,可能像所有内容一样从共享池中老化 否则 - 它不会因数据库关闭而产生间隙。 你永远不应该指望产生任何甚至接近无间隙的序列 数字序列。它们是一种高速,极易扩展的多用户方式 为表格生成代理键。
基本上,它不是问题,他们做他们做的事情。如果您的主键需要连续的数字序列,则需要自己生成(max + 1)戴夫