求:在oracle中用java自动生成主键的良方

nighthawk 2005-01-02 04:30:11
如题
...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxzg001 2005-01-02
  • 打赏
  • 举报
回复
建个HashMap,以表名为键,记录该表的最大记录数。
在需要往某个表插入记录前,先从HashMap中获取该表的最大记录数。
此时有两种情况,
1、HashMap中没有对应的信息,此时需要运行select count(*) from 表名 获取最大记录数,然后加1就得到了将要插入记录的主键值,还要将这表名和加1后的记录数put到HashMap中;
2、HashMap中有对应信息,此时直接从HashMap中取得最大记录数并加1得到将要插入记录的主键值,然后再更新HashMap。
上面的方法可以得到类似于id自动递增的效果,需要注意操作时的同步。
classjava 2005-01-02
  • 打赏
  • 举报
回复
关注一下
pigo 2005-01-02
  • 打赏
  • 举报
回复


guid。有现成别人写好的东西。

lonelydavy 2005-01-02
  • 打赏
  • 举报
回复
public synchronized static String getKey() {
String key = " ";
long time = new Date().getTime();
if ( time == prevTime ) {
int cs = clockSequence + 1;
if ( cs > 65535 ) cs = 0;
if ( clockSequence > cs ) {
clockSequence = 0;
try {
Thread.sleep(1);
time = new Date().getTime();
}catch(InterruptedException ie) {
ie.printStackTrace();
}
}else {
clockSequence = cs;
}
}
key = time + Integer.toHexString(clockSequence);
prevTime = time;
return key;
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧