以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]并发冲突问题重发(含例子)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41410)

--  作者:loongtai
--  发布时间:2013/10/18 17:19:00
--  [求助]并发冲突问题重发(含例子)

<物料类别表>----用户A可以编辑
<物料参数表>----用户B可以编辑
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:并发冲突问题例子.zip

其中<物料参数表>的[物料类别]列的列表项目是取值于<物料类别表>中的[分类代码]列。
<物料类别表>中的记录删除条件:<物料参数表>中无记录引用此行数据,则可删除,否则不允许删除。
假设场景:
A正在编辑<物料类别表>,正要删除分类代码:1405005的记录;而此时B也正在编辑<物料参数表>,新增1405005这行记录。
由于A在执行删除操作时,B并未将此条记录加入,所以此时<物料参数表>中是不含1405005这条记录的,符合删除条件,因此A可以执行删除操作,当A删除后进行保存,此时<物料类别表>中不再含1405005的分类代码。而B在添加1405005这条分类代码时,由于A虽执行删除操作,但还未保存,因此<物料类别表>中此时还是有1405005这条记录,因此B也可以顺利添加。当B保存后<物料参数表>中存在分类代码为1405005这条记录。这就产生了一个冲突的问题:<物料分类表>中不含1405005,而<物料参数表>中却含有1405005。不知狐表对这种情况是如何处理的?是不是当A操作<物料分类表>了,则其它与此表相关的任何表都不允许再编辑了;当B操作<物料参数表>了,则其它与此表相关的任何表都不允许再编辑。如果这样处理,好像冲突的几率应该挺大的。不知有没有更好的解决办法。

--  作者:有点甜
--  发布时间:2013/10/18 19:56:00
--  
  对于这样有引用的父表数据,常规的做法,是不允许删除的,只是做一个删除的标识而已,数据一直保存在数据库里的。