我遇到了嵌入式数据库的德比序列问题。当我第一次连接到数据库时,它使用以下语句为我提供了正确的序列下一个值。
VALUES (NEXT VALUE FOR :seqNm)
但是当重新启动我的桌面应用程序时,通过重新连接到数据库,下一个值会给我下一个百分之一的值。看起来德比使用一些缓存来预先分配序列号。
e.g。如果我的序列以100开头, 与数据库的第一次连接使我的序列为100,101,102等。
与数据库的第二次连接使我的序列为200,201,202,203等。
与数据库的第三次连接使我的序列为300,301,302,303等。
此问题是否有解决方法?我使用spring连接到数据库。
谢谢!
答案 0 :(得分:2)
根据https://db.apache.org/derby/docs/10.9/ref/rrefproperpreallocator.html,是的,有一个序列预分配器:)
在配置中输入:
derby.language.sequence.preallocator=number
其中number是预分配数量的序列OR
derby.language.sequence.preallocator=className
如果你想要一些更高级的序列分配,className会导致一个实现 SequencePreallocator 的类......
希望它有所帮助!