日期:2014-05-17  浏览次数:20724 次

webservice事务问题
在同一个事务中对某一个表进行操作:
先删除一条记录,再增加一个相同主键的记录,提交事务。
问题:执行十次上述操作,有一次能成功,其他都会报主键重复的错误,主键重复的错误可以理解,因为事物没有提交所以没有真正的删除这条记录,但是问什么有时候就能成功呢;在PB中这样的事务是可以提交的,怎样可以在java中也能成功呢?


------解决方案--------------------
既然主键相同,为何不直接更新呢?
------解决方案--------------------
删除之后,COMMIT一下啊!!
------解决方案--------------------
插入数据指定主键的值
------解决方案--------------------
你确定是一个事务中吗?
两个库操作。用的同一个connection吗。
------解决方案--------------------
插入的时候制定主键的值吧

这个应该方便一些

个人意见,祝楼主好运
------解决方案--------------------
新建个表B,把数据全插进去。然后把准备被更新的表(A)删掉,B改表名为A,可以吗?
------解决方案--------------------
LZ是oracle数据库吗?如果是同一个事物内,那我觉得应该没问题。但是你需要先将这个数据加上锁在操作防止其他线程干扰。
------解决方案--------------------
delete-->commit-->insert
或者直接update
------解决方案--------------------
Java code
delete....
select uid...
if(uid存在){
update}
else{delete}

------解决方案--------------------
saveOrUpdate祝你成功