今天受教了。
注意: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;
}
}
}
本文详细介绍了在使用Oracle数据库时,sysdate作为更新字段可能导致的主键冲突问题,并提供了通过Java代码延迟执行来解决该问题的方法。
1490

被折叠的 条评论
为什么被折叠?



