7

我创建了一个 Oracle 序列:

创建序列 seq_acteurs 以 1 递增 1 开始;

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

任何帮助将不胜感激。

4

3 回答 3

4

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

于 2011-05-29T19:06:26.267 回答
3

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

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

文档中的示例:

CREATE SEQUENCE customers_seq START WITH 1000 INCREMENT BY 1 NOCACHE NOCYCLE;

于 2011-05-29T19:00:49.787 回答
3

在你的实体类中添加这个并将增加 1

allocationSize=1

这是一个例子:

@SequenceGenerator(name = "ECP_EVALUACION_SEQ", sequenceName = "SCORTN.ECP_EVALUACION_SEQ",allocationSize=1)
于 2016-10-24T15:56:40.193 回答