有一张表table1(a number, b varchar , c varchar, d number) ----a为主键
现在要对表进行修改和删除操作(针对的是表中的一条数据,而不是全表进行删除)实现并发处理:(提示信息是在jsp页面显示的,用的数据库为oracle 9i)
1)并发删除,后删除的提示:存在已经被删除的信息,请重新选择!
2)先删除后修改,提示:该表记录已经被删除! 由于刚刚工作,对并发处理很陌生,请高手们帮帮忙,是用存储过程还是在java中实现并发,最好有实现的过程(代码),千万不要只回答“利用存储过程实现”等这样的语句。
先感谢回答问题的同志了,更感谢帮助我解决问题的同志,高手了。
现在要对表进行修改和删除操作(针对的是表中的一条数据,而不是全表进行删除)实现并发处理:(提示信息是在jsp页面显示的,用的数据库为oracle 9i)
1)并发删除,后删除的提示:存在已经被删除的信息,请重新选择!
2)先删除后修改,提示:该表记录已经被删除! 由于刚刚工作,对并发处理很陌生,请高手们帮帮忙,是用存储过程还是在java中实现并发,最好有实现的过程(代码),千万不要只回答“利用存储过程实现”等这样的语句。
先感谢回答问题的同志了,更感谢帮助我解决问题的同志,高手了。
解决方案 »
- 模糊查询
- java学习
- hbm.xml生成数据库外键约束的问题
- JMS的C/S模式和B/S模式差异,help
- 关于ibatis,是否支持这种表达方式
- rome0.9 错误提示 java.net.SocketException: Unexpected end of file from server
- 吐血~~~,签名的applet访问本地文件,为何出现异常
- 如何捕捉jTable中选择其中一行的事件。
- 关于deploy ejb-jar
- 代码怎么实现导入导出Excel表格
- javax.servlet.ServletException: Cannot expose request attribute
- 如何从jsp页面中的文本框中获取中文到servlet类中
而且oracle的多版本控制能提供很好的并发性以及一致性
所以不用担心会出错
而且找你的需求
你可以先select for update nowait加上悲观锁,这个是行级锁,此时其他事物select for update的时候会抛出
resouce busy的错误
没必要是用存储过程
用jdbc的话,执行删除操作用executeUpdate()会返回删除的条数,如果删除0条返回-1吧好像,如果返回-1就说明是后删,如果返回条数则删成功。update也是,修改后返回-1表示没有修改,说明已经被删掉了,提示不存在。。
一、viszl
(一生所爱):你好!
select for update nowait加上悲观锁,我不知道怎么使用,我在网上搜了一下,但是没有什么具体的例子。不知道你有时间帮忙给个例子行吗?谢了!
bill0605030109
(超级小黑猪):你好!
我用的是jdbc,executeUpdate()返回值:
(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数 (2) 对于什么都不返回的 SQL 语句,返回 0
请问对于(2)中的理解我有:一种是本身删除了0条数据,还有一种就是出现异常也会返回0吗?如果异常会返回0的话,那么这样的饿话,就分不清是删除的行不存在还是出现异常了。