我的SQL Server数据库中有多个表。我有一个表[Tatkal_Merge],其中包含诸如文件名,C_srno,扫描等字段。 [c_srno是辅助密钥]第二个表Collat​​ion_Data具有srno,文件名,dispatchcount,totalcount等详细信息。[srno是主键]totalcount是tatkalmerge表中的记录总数。两个表中都有许多其他字段,但与该问题无关。每当客户在winForm中扫描条形码并且更新成功时,我都会使用扫描值“ Y”更新[Tatkal_Merge],并使用存储过程来增加Collat​​ion_Data派发计数update [Tatkal_Merge] set [DScan]=@scan,[DScanBy]=@scanBy,[DScanTime]=getdate() where Dscan='N' and [wl_barcode]=@wlif(@@ROWCOUNT=1)update Collation_Data set Dqty=Dqty+1 where srno=@C_srno问题有时由于某种原因,有1或2个客户的分派计数不正确。需求:1)请说明为什么计数有差异。我的猜测是第一条命令和第二条命令之间的网络问题。2)如果做错了,正确的做法是什么?3)如果在这种情况下正确执行如何更新表B?附言目前,我正在定期使用相关子查询更新collat​​ion_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 ); 最佳答案 您可以采取以下几项措施隔离并排除故障:将两个更新都包含在事务中在第二次更新时捕获@@ ROWCOUNT,如果该值= 0,则表示更新未成功完成,您可以将所有重要字段和变量写入日志记录表,这可能会导致罪魁祸首。第二个更新失败的主要原因是,如果第一个更新的@@ ROWCOUNT为 1或找不到该srno的任何行。这不太可能是网络问题。关于c# - SQL同步计数与表组结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38196216/
10-08 20:59