我创建了一个 Oracle 序列:
创建序列 seq_acteurs 以 1 递增 1 开始;
通常序列必须加1,但插入Acteurs
表时,序列s
加50!这似乎不合逻辑。为什么会这样?
任何帮助将不胜感激。
我创建了一个 Oracle 序列:
创建序列 seq_acteurs 以 1 递增 1 开始;
通常序列必须加1,但插入Acteurs
表时,序列s
加50!这似乎不合逻辑。为什么会这样?
任何帮助将不胜感激。
当您需要它们时,不会一次获取一个序列号。通常,数据库会在内存中缓存一定数量的序列号。当缓存的序列全部用完时,数据库将一个新的序列号块提取到缓存中。现在,如果数据库由于某种原因而崩溃,而缓存中仍有一些未使用的数字,那么您的序列号中可能存在一些空白。
序列不保证它们会生成无间隙的数字序列。
您可以通过指定 来最小化间隙nocache
,但这仍然不能保证无间隙序列,并且可能会产生资源争用。
文档中的示例:
CREATE SEQUENCE customers_seq START WITH 1000 INCREMENT BY 1 NOCACHE NOCYCLE;
在你的实体类中添加这个并将增加 1
allocationSize=1
这是一个例子:
@SequenceGenerator(name = "ECP_EVALUACION_SEQ", sequenceName = "SCORTN.ECP_EVALUACION_SEQ",allocationSize=1)