并发性问题(business)

soruce:http://www.cnblogs.com/netcorner/archive/2008/07/29/1255395.html

这几天忙着解决并发性问题,一直也没好的解决方案,查过的一些资料也基本上就是数据库加琐,可我遇到这种情况估计用数据库加琐是很难解决的,下面大概描述这种情况:

       A,B用户(都具有该问这个模块权限的情况下)进入同一个管理列表时,数据都是相同的(因为当时可能还没有被修改),当时A用户就发现某条记录某项还没填写完整点击进去修改,此时B恰好也同时进入了该页面,也有想修改的意思。A用户把其中某项数据填写完整后提交了。而B看到这条记录,其实A用户已经填写完整了,但是他还不知道(看到的还是原先的信息),以为这下记录可能还存在问题,所以他在该记录信息的备注项,填写了“该信息未填写完整”,然后也提交上去。这时这条记录的信息其实就被B用户修改了,而A刚刚把这个填写完整的信息,全被B用户填写的信息覆盖了。

AB用户看到列表如下:
 

这时他们发现货物编号为53453453453里面填写不完整,两人正好同时点击进入了修改页。如图:


A用户把目的港改动了,而B用户在备注填写了一些说明(可能是说目的港填写有错).

A修改完以后,B随后也做了修改,这时完整的信息其实是被B修改的信息,而A刚刚把目的港改写的信息还是被成被B修改后的原始信息了,就等于A的修改动作没做一样了。

       这种情况如果单纯用数据库,估计很难解决,曾经想过把这条记录在某用户点击编辑时琐定,然后通过会话ID的判写,加记录的ID,此时只能第一个点击编辑的用户,才有编辑权限,当触发Session_End,就结束锁定该记录。

       以上问题是我个人的一点想法,不知园子里的朋友如果处理此问题的,向大家讨教心得。

Tag标签: 并发性 琐
posted @ 2008-07-29 11:00 netcorner 阅读(54) 评论(6)   编辑 收藏


   回复   引用   查看     
#1楼  2008-07-29 11:02 | Tony Zhou       
是事务的隔离级别的问题吧
   回复   引用   查看     
#2楼  2008-07-29 11:07 | lexus       
使用时间戳应用可以解决吧?
   回复   引用   查看     
#3楼  [ 楼主]2008-07-29 11:09 | netcorner       
@Tony Zhou
两个同时进入修改页(两个读出相同数据准备修改),一个已经更新好了,下个更新(读出的是旧数据)就会把前面修改的给覆盖
   回复   引用     
#4楼  2008-07-29 11:10 | YYX [未注册用户]
研究下乐观锁和合并修改这些方面的东西吧
   回复   引用     
#5楼  2008-07-29 11:15 | bestshl——guest [未注册用户]
2楼的想法应该可以的,两个用户编辑的时候都要取该记录的时间戳字段,提交的时候先读取,如果时间戳不一致,则不允许提交。先更新成功的要同时更新时间戳。
   回复   引用   查看     
#6楼  [ 楼主] 2008-07-29 11:16 | netcorner       
貌似时间戳可以解决这个问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值