日期:2014-05-18  浏览次数:20508 次

请问这是SQLSERVER的BUG还是代码有误,请帮忙解决,谢谢
--Cal QTY_ON_HAND QTY_ON_HAND_COST
update maitem set QTY_ON_HAND=isnull(A.QTY_ON_HAND,0)-isnull(B.qty,0),QTY_ON_HAND_COST=isnull(A.QTY_ON_HAND_COST,0)-( isnull(B.qty,0)*isnull(A.average_cost,0) )
from maitem A inner join
(select E.ref_no,E.item_no,E.loc,sum(E.qty) as qty
 from inmovd E
 where E.ref_no=@REF_NO
 group by E.ref_no,E.item_no,E.loc
) B
on A.item_no=B.item_no --amend 20120704 and A.loc=B.loc and B.ref_no=@REF_NO 


这是一段存储过程更新数据库的代码,现在有同一张单号的10条记录,为什么有时候却UPDATE了9条,但是其中1条UPDATE不成功,再执行一次这个存储过程又可以UPDATE到10条记录。我使用的是SQL SERVER EXPRESS 2005 (备注:REF_NO 为订单单号)


------解决方案--------------------
看不出来有什么毛病,你还加事务了,也能正常提交,那语法上应该没有问题了

你检查一下你的根性逻辑,还有表的数据