当前位置: 代码迷 >> Informix >> []批量插入数据serial8类型主键重复的有关问题
  详细解决方案

[]批量插入数据serial8类型主键重复的有关问题

热度:3420   发布时间:2013-02-26 00:00:00.0
[求助]批量插入数据serial8类型主键重复的问题
最近遇到一个informix数据库的问题:数据库的一张表的主键id是serial8类型的,表是行锁模式(建表的时候有lock mode row;)。该字段的值在数据插入的时候,系统自动生成。因为放入这张表的数据量比较大,我们采用批量插入的方式对其进行数据插入(PreparedStatement psm ,先把一定量数据psm.addBatch(); 然后 psm.executeBatch()执行一次)。  
  在这种方式下,单线程没有问题,因为我们需要把实时和批量数据分开进行插入,所以有实时数据和批量数据有两个线程进行插入数据,在这种情况下压力测试,发现有少量的主键重复的情况。目前怀疑的地方有两点:
  一: serial8自动生成的时候有问题。 
  二: 批量插入的方式(psm.executeBatch())有问题。
  下面是出错的日志:
  java.sql.BatchUpdateException: Unique constraint (eibs1.u134_72) violated.
  java.sql.BatchUpdateException: Unique constraint (eibs1.u134_72) violated.
  java.sql.BatchUpdateException: Unique constraint (eibs1.u134_72) violated.
   
  没有找到比较有效的资料,还请各位大侠多多指教。谢谢!


------解决方案--------------------------------------------------------
1, 加入mt_id,value 为0 试试
2,有没有触发器?有没有begin tran/lock一类的代码
3,serial8 没有bigserial好用
  相关解决方案