我使用Oracle序列作为表的主键,在Java应用程序中使用int映射这个主键,现在我发现我的客户已经达到了表中的最大int,甚至序列可以不断增加。但是Java int 不再能够存储它,我不想将Java代码从int更改为long,因为成本非常高。然后我发现客户数据库在 ID 列中有很多很大的空白。有什么办法可以重复使用这些丢失的身份证号码吗?
如果可以在数据库级别执行此操作,例如我可以重新组织此序列以将这些缺失的数字添加到其中,因此无需更改 Java 代码,那么我可以使用这些间隙。它应该很棒。
我将编写一个函数来查找间隙范围,在有了这些数字之后,如果可以的话,我想将它们分配给序列值的池,所以也许从现在开始,它不会使用自动递增,只使用我的数字分配的。在 Java 代码中,我可以继续使用 findNextNumber 来调用序列。但序列将能够返回我分配给它的值。这似乎是不可能的,对吧?有什么选择吗?