gpt4 book ai didi

Oracle APEX 中的 SQL 自动递增在递增时偶尔会跳过一大块数字?

转载 作者:行者123 更新时间:2023-12-04 19:27:12 25 4
gpt4 key购买 nike

我在 APEX 中创建了一个表,该表具有一个由 SQL 序列递增的 PK:

CREATE SEQUENCE seq_increment
MINVALUE 1
START WITH 880
INCREMENT BY 1
CACHE 10

这似乎工作得很好。问题是有时,通常当我早上起来运行一个进程来输入一个新行时,它会跳过一堆数字。我只关心,因为这些数字被用作我公司文档的 ID#,当这个工具上线时,丢失/跳过数字 block 是 Not Acceptable 。

它似乎确实跳到了下一个“10”数字。即昨天我的最后一次测试分配了 883,今天早上它分配了 890 作为下一个数字。查看我创建序列的代码,我注意到我已将它设置为缓存 10 个值,以便它处理得更快。这个缓存是否有可能在一夜之间被转储并且它正在拉取 890 因为它在缓存中有 880-889 并且它被转储了?

是否还有其他潜在原因和解决方案?

最佳答案

序列不会也不能生成无间隙值。所以你会期望数字偶尔会被跳过。当您使用序列时,这是完全正常的。

正如您所猜测的,最有可能的情况是当 APEX 应用程序未被使用时,序列缓存在一夜之间从共享池中老化。您可以通过声明序列 NOCACHE 来减少间隙的频率,但这会降低性能并且不会消除间隙,只会降低它们的频率。

关于Oracle APEX 中的 SQL 自动递增在递增时偶尔会跳过一大块数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com