dw的更新条件子句控制“并发”的实例
2011-5-20 10:08
<FONT style="FONT-SIZE: 10.5pt" face=""">
如上图有一个【发货记录表】, 有两个部门操作
① 是成品发货, 要记录装车时间和条码扫描人
② 是财务, 要记录出库时间(实际是收款时间)和审核人
虽然在成品发货时, 不会修改【财务审核人/出库时间】, 但是在 update 的where子句中, 仍要包括【财务审核人 和 出库时间】这两个字段, (如图:
)
否则可能会由于“并发”导致错误的结果
在发货审核时,要求根据财务收款审核情况,做出不同的动作,看下两种方式在实际工作时的区别:
A.假设dw对象中未设置【财务审核人&出库时间】为可更新字段
当成品发货在打开本工作界面时, 财务尚未进行收款审核, 因此, 【财务审核人 和 出库时间】在dw中的值是空的, 但在成品发货部门点保存按钮之前, 财务部门进行了收款审核并保存,而这时成品发货部门再点保存是可以成功的,这时由于认为财务尚未进行收款审核,从而做出错误的保存步骤。
B.假设dw对象中设置为更新字段包括【财务审核人&出库时间】
当成品发货在打开本工作界面时, 财务尚未进行收款审核, 因此, 【财务审核人和出库时间】在dw中的值是空的, 但在成品发货部门点保存按钮之前, 财务部门进行了收款审核并保存,而这时成品发货部门再点保存,则会保存失败,从而不会发生A中的错误.
同理, 在财务收款审核界面上的【发货记录表】dw中, update的where子句中,也要包括【装车时间 和 条码扫描人】两个字段
这样,一但出现了并发操作,dw会报告更新失败,用户重新进入后,获得最新数据, 就可以正确处理和保存了。