今天受教了。
注意:oralce中的sysdate是以秒为单位的(YYYYMMDD HHMMSS)
所以当执行update和insert要更新某一字段为sysdate时,一定要小心,如果该字段是主键,那么很可能会存在隐患。
即,当代码的执行速度足够快,而且循环执行更新sysdate的SQL文时,就会出现主键重复异常。
解决办法:
在更新数据时,在java代码中延迟1秒。
特附代码:
private void updateRcvsnd(Rcvsnd rcvsnd) {
// 試し回数
final int count = 2;
for (int i = 0; i < count; i++) {
try {
sumscr030Dao.updateRcvsndInfo(rcvsnd);
break;
} catch (SystemException e) {
if (i == count - 1) {
throw e;
}
try {
// 1秒Sleep
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
continue;
}
}
}