场景是这样的:
1.查找表A中id最大值,比如是1000
2.在J2EE应用中用for循环执行批量insert操作,每次是找出最大的id然后加1,然后都显式commit。问题是,for循环第一次是可以的,第二次找出的最大值却是和第一次找出的是一样的。
但是我每次循环insert后都commit了,然后再循环。难道读的是缓存?求教
1.查找表A中id最大值,比如是1000
2.在J2EE应用中用for循环执行批量insert操作,每次是找出最大的id然后加1,然后都显式commit。问题是,for循环第一次是可以的,第二次找出的最大值却是和第一次找出的是一样的。
但是我每次循环insert后都commit了,然后再循环。难道读的是缓存?求教
-- 还有:你为什么要这样做?
2.我每次insert的时候我要获取里面最大值后加1作为主键3.这个主键有特殊用途,所以没有用sequence
但是场景我是描述清楚了。不知道oracle在执行期间的原理是什么
如果设置为Serializable,即使提交了,也看不到。
或者 你第一个select之后,for循环里面每个都+1不行吗?
能减少数据库的访问次数,还是能提高不少效率的。
因为主键是字母+数字的。比如“U00008"。现在问题解决了,是自己手动来拼这个主键的。