系统中有5张表调用同一个序列
在每次执行insert语句的时候
int result = "select xxx_seq.nextval from dual";
Connection conn = null;
Statement sta = null;
ResultSet rs = null;
try {
conn = DB.getConn();
sta = conn.createStatement();
rs = sta.executeQuery(sql);
while (rs.next()) {
result = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(conn, sta, rs);
}
insert into table_xxx (t_id,t_name) values (result,'xxx');
每执行插入100-200条数据就会爆出主键t_id重复的错误 谁能分析一下原因?
result是每次执行插入的时候都会重新查一下序列产生新的 result

解决方案 »

  1.   

    你的insert语句直接写成 insert into table_xxx (t_id,t_name) values (xxx_seq.nextval,'xxx');不行吗?
      

  2.   

    应该是程序的问题吧……
    int result 怎么初始化值是"select xxx_seq.nextval from dual"啊(可能是你贴代码是贴错了)
    最主要的是insert into table_xxx (t_id,t_name) values (result,'xxx');这个操作
    必须是异常没有发生时,才会会执行的操作……
    如果异常发生了,result 的结果是初始化值,可能一次异常发生插入信息不会出错……
    但是第二次肯定会报主键t_id重复的错误 
      

  3.   

    试过楼上的几种方法 还是偶尔会出现问题 包括将 xxx_seq.nextval写到 insert sql语句中。最后只能新建4个序列 将问题解决