我有一个带有自动增量主键的 sqlite 数据库,它通过 java 接口。由于应用程序的原因,我不能使用数据库中自动生成的主键,所以我需要为 java 中的每一行创建一个 id。
所以我的问题是,是否有一种适用于 java 的算法,我可以遵循它来为数据库创建唯一的整数 id。
我知道我可以增加等,但我需要使用回滚、溢出和间隙填充等东西。
根据您的应用程序要求,您可以将主键 Integer 更改为 String 并使用可以轻松使用 java util 类java.util.UUID
。它表示不可变的通用唯一标识符 (UUID)。UUID 代表一个 128 位的值。
如果应用程序具有整数主键的任何持久性。您可以编写一个产生序列号的函数。它背后的逻辑是,基本上它需要有当前序列。如果没有,则调用 db 并获取最大条目。
static Integer currentSequence=-1;
static Integer function primaryKeyGenerator(){
if(currentSequence==-1){
//Make a db call and get the max
if(no data in table){
currentSequence=1;
}else
currentSequence=rs.getInt(1);
}
return currentSequence+=1;
}