我的SQL Server数据库中有多个表。
我有一个表[Tatkal_Merge],它有像filename,C_srno,Scan等字段。 [c_srno是次要密钥]
第二个表Collation_Data包含srno,filename,dispatchcount,totalcount等详细信息。[srno是主键]
totalcount是tatkalmerge表中的记录总数。
两个表中还有许多其他字段,但与此问题无关。
每当客户扫描winForm中的条形码并且更新成功时,我用扫描值' Y'更新[Tatkal_Merge]。并使用存储过程
增加Collation_Data调度计数update [Tatkal_Merge] set [DScan]=@scan,[DScanBy]=@scanBy,[DScanTime]=getdate() where Dscan='N' and [wl_barcode]=@wl
if(@@ROWCOUNT=1)
update Collation_Data set Dqty=Dqty+1 where srno=@C_srno
问题
有时由于某种原因,1或2位客户的调度计数不正确。
要求:
1)请指导为什么计数存在差异。我的猜测是第一和第二个命令之间的网络问题。
2)如果我这样做错了,这样做的正确方法是什么?
3)如果在这种情况下如何更新表B的权利呢?
P.S。
目前,我正在定期使用相关子查询更新collation_Data,
update Collation_Data c
set Dqty = (select count(*)
from [Tatkal].[dbo].[Tatkal_Merge] m
where m.Dscan = 'Y' and m.collation_code = c.collation_code
);
答案 0 :(得分:0)
您可以做很多事情来隔离和排除故障:
答案 1 :(得分:0)
if(@@ROWCOUNT=1)
如果表[Tatkal_Merge]的第一次更新有更多匹配行,则可能会出现问题。而是将其更改为:
if(@@ROWCOUNT > 0)
update Collation_Data set Dqty=Dqty+1 where srno=@C_srno