日期:2014-05-20  浏览次数:20601 次

修改、删除功能并发处理 SOS
有一张表table1(a number, b varchar , c varchar, d number) ----a为主键
  现在要对表进行修改和删除操作(针对的是表中的一条数据,而不是全表进行删除)实现并发处理:(提示信息是在jsp页面显示的,用的数据库为oracle 9i)
1)并发删除,后删除的提示:存在已经被删除的信息,请重新选择!
2)先删除后修改,提示:该表记录已经被删除!

  由于刚刚工作,对并发处理很陌生,请高手们帮帮忙,是用存储过程还是在java中实现并发,最好有实现的过程(代码),千万不要只回答“利用存储过程实现”等这样的语句。
先感谢回答问题的同志了,更感谢帮助我解决问题的同志,高手了。

------解决方案--------------------
oracle的话一般是read commited隔离级别
而且oracle的多版本控制能提供很好的并发性以及一致性
所以不用担心会出错
而且找你的需求
你可以先select for update nowait加上悲观锁,这个是行级锁,此时其他事物select for update的时候会抛出
resouce busy的错误
没必要是用存储过程
------解决方案--------------------
你用jdbc还是用hibernate?
用jdbc的话,执行删除操作用executeUpdate()会返回删除的条数,如果删除0条返回-1吧好像,如果返回-1就说明是后删,如果返回条数则删成功。

update也是,修改后返回-1表示没有修改,说明已经被删掉了,提示不存在。。
------解决方案--------------------
hibernate类似。
------解决方案--------------------
探讨

谢谢上面的高手的回答,很感谢!
一、viszl
(一生所爱):你好!
select for update nowait加上悲观锁,我不知道怎么使用,我在网上搜了一下,但是没有什么具体的例子。不知道你有时间帮忙给个例子行吗?谢了!
bill0605030109
(超级小黑猪):你好!
我用的是jdbc,executeUpdate()返回值:
(1) 对于 SQL 数据操作语言 (DM……