并发冲突

问题:

  数据集的结构与上面表结构相同,也句含Order,Details  
  两个表通过orderid作为外键相联  
  两个表对应的数据适配器分别为:sqlAdapter1,sqlAdapter2  
  问题是这样的:  
  当我对数据集中的Order的orderid修改时,Details的orderid也自动修改  
  然后,用sqlAdapter1更新数据库时,  
  数据库中Details表的orderid   因为外键关系也为自动的修改  
  接下来,sqlAdapter2更新Details时,因为该表的orderid已被修改  
  这样必然引发,并发冲突  
   
  如果,删除数据库中两个表相关的外键,虽然不会产生并发冲突了,  
  但是这与数据库设计原理是有违的,这样的数据库是很脆弱的,可能会  
  产生毁灭性的灾难,  
  第两种解决方法是,选判断数据集中Details中orderid列对应各单元格的内容  
  是否已经修改过,再用多个数据适器更新,这样的话可能要判断十多种情况.  
  这样理论上是没有问题的,但是不怎么么现实!

--------------------------------------------------------------------------------------------------

这个,和一般的开放式并发处理没有区别。几个要点:  
  1、先主后从,使用事务包住。  
  2、更新的时候,不要选择遇到异常就失败那种模式。  
  3、从表捕捉到并发异常的时候(必然的,主表写入数据库时,已经触发了从表的变化),采用强制覆盖模式,不需要人工判断。  
  4、除去并发异常之外,其他异常即回滚,待用户调和之后重新提交。  
   
  如此而已,并不复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值