sql server 2000 级联更新问题,进者有分 ( 积分: 200 )

  • 主题发起人 主题发起人 anags
  • 开始时间 开始时间
A

anags

Unregistered / Unconfirmed
GUEST, unregistred user!
关于级联更新的问题:刚刚接触,请各位老师予以赐教。<br>sql&nbsp;server&nbsp;2000+delphi7&nbsp;c/s结构:<br>一个主表的字段(配件代码)被8个表所引用(入库单,出库单,库存。。。),如果采用级联<br>更新(在sql&nbsp;server&nbsp;中设置了关系,并选级联更新相关字段):<br>如果修改已采用的配件代码:<br>1.级联更新当数据量大和引用表多时会不会影响程序的运行速度?(数据每天在增长)<br>2.理论上讲会不会出现并发错误:<br>如:出库单:配件代码&nbsp;出库数量<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;库存:&nbsp;&nbsp;&nbsp;配件代码&nbsp;库存数量<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10<br>用户A执行出库操作:update&nbsp;库存&nbsp;set&nbsp;库存数量=库存数量-出库数量&nbsp;where&nbsp;出库单.配件代码=库存.配件代码<br>同时用户B&nbsp;修改配件代码08&nbsp;为08A<br>会不会出现:级联更新刚更新了库存而未更新出库单时,执行出库操作。<br>这样就会出现:update&nbsp;库存&nbsp;set&nbsp;库存数量=库存数量-出库数量&nbsp;where&nbsp;08=08A<br>从而导致不能更新库存?
 
1.当然影响速度。但这种更新通常较少,而且只出现在数据维护时,一般关系不大。<br>2.不会。条件是,你要么通过级联更新,要么通过触发器来更新,要么你的每次更新都使用事务(不推荐)。<br>在级联更新完成之前,就是事务未完成,未完成的的事务要么完成提交,要么回滚。<br>当对数据进行操作时,SQL&nbsp;Server&nbsp;对同一个表的不同事务是排队的,会自动加锁。绝对不会级联更新未完成,级联关系码(比如你的08)就修改了。
 
不懂,学习!<br>期待高手.<br><br>如果是我,我就不让他们修改&nbsp;配件代码.<br>但是好象是风牛马.
 
能不能利用觸發器和事務處理?
 
同意二楼
 
1,肯定会有影响<br>2,不会,便也不建议使用&nbsp;TRIGGER的.
 
to&nbsp;hegyi:<br>1.你的意思,一旦启用级联更新,要么08=08,要么08A=08A。<br>2.通常的进销存软件中允许已采用的代码修改吗?<br>3.我原来的做法是代码一经采用不能修改,只能停用,然后再填入新代码。<br>&nbsp;&nbsp;2和3那种思路较好呢?
 
经常修改代码的情况:使用ID<br>&nbsp;&nbsp;&nbsp;&nbsp;配件表&nbsp;&nbsp;&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;配件代码&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;08A&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;出库单:配件ID&nbsp;&nbsp;配件代码(配件表中的)&nbsp;&nbsp;出库数量<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;08A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br>不知道说明白没有
 
非常谢谢各位帮助。分分了。
 

Similar threads

后退
顶部