0

我创建了一个序列,但它没有按序列顺序插入 id。

例如:

  • 首先,我创建了一组记录序列号,生成为 1、2、3、4

  • 我再次创建了另一组从 8、9、10 开始的记录 seq

  • 第三次我创建了另一组记录 seq id 生成为 5、6、7(这是不正确的,我希望 seq id 继续为 11、12、13)

所以5、6、7是错的,我需要生成11、12、13

我的以下序列创建查询有什么问题?

CREATE SEQUENCE "LEASE_REPAYMENT_SEQ" 
MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1
START WITH 146724 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ;
4

1 回答 1

3

如果您检查序列定义,您会看到您将其定义为NOORDER.

甲骨文文档

如果您不想保证按请求顺序生成序列号,请指定 NOORDER。这是默认设置。

所以你看到的是一种预期的行为,我假设你的数据库是一个RAC实例(因为这种效果只能在上面观察到RAC)。

话虽如此,有充分的理由允许分配的 s 的这种小混乱ID(这是由缓存引起的,因为每个RAC实例都有自己的缓存大小可以使用)。

这种方法的积极方面是不需要在实例之间同步序列——这项任务可能会产生很大的开销。

于 2021-06-15T15:43:34.550 回答