序列递增50而不是1

时间:2011-05-29 18:42:46

标签: oracle10g sequences id-generation

我创建了一个Oracle序列:

创建序列seq_acteurs以1加1开始;

通常,序列必须递增1,但是当插入Acteurs表时,序列s递增50!这似乎不符合逻辑。为什么会这样?

任何帮助都会有很大帮助。

3 个答案:

答案 0 :(得分:3)

序列不保证它们生成无间隙的数字序列。

您可以通过指定nocache来最小化间隙,但这仍然不能保证无间隙序列,并且可能会造成资源争用。

documentation的示例:

  

创建SEQUENCE customers_seq    开始1000    增加1    NOCACHE    NOCYCLE;

答案 1 :(得分:3)

在您需要时,不会一次提取一个序列号。最重要的是,DB在内存中缓存了一定数量的序列号。当缓存的序列全部用完时,DB会将一个新的序列号块提取到缓存中。现在如果数据库由于某种原因崩溃而缓存仍然有一些未使用的数字,那么你的序列号可能会有一些空白。

答案 2 :(得分:0)

在您的实体类中添加此内容并将增加1

allocationSize=1

这是一个例子:

@SequenceGenerator(name = "ECP_EVALUACION_SEQ", sequenceName = "SCORTN.ECP_EVALUACION_SEQ",allocationSize=1)