关于Sqlserver2008R2 存储过程执行的奇怪问题

crazy_boom 2019-05-10 06:18:26

存储过程中有 如下一段过程


UPDATE SPB SET LSJ=ISNULL(B.LSJ,0),HUIYTJ=ISNULL(B.HUIYTJ,0),cuxj=isnull(b.cuxj,0)
FROM SPB A JOIN TMP_SPB B ON B.BH=@ID AND A.DSPID=B.DSPID

UPDATE HWC SET LSJ=ISNULL(B.LSJ,0)
FROM HWC A JOIN TMP_SPB B ON B.BH=@ID AND A.DSPID=B.DSPID AND ISNULL(A.LSJ,0)<>0



更新结果发现 第二段中的 HWC 表中的 LSJ 更新了值 而 SPB 表没有变化 。这是什么原因呢。
这两个表的条件 都是一样的。并且 SPB 中存在更新的记录。
每次发现这样的问题 ,再重新操作一遍 , SPB 和 HWC 表的值 就都一致了。
发现过好几次类似的问题 会不会是 SQLserver的BUG呢 还是我哪里写的有问题

太奇怪了!!
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2019-06-18
  • 打赏
  • 举报
回复 1
2个语句的条件不完全一样的喔, 第1句: JOIN TMP_SPB B ON B.BH=@ID AND A.DSPID=B.DSPID 第2句: JOIN TMP_SPB B ON B.BH=@ID AND A.DSPID=B.DSPID AND ISNULL(A.LSJ,0)<>0 建议再次检查确认整个存储过程的程序逻辑是否正确, 顺便检查一下SPB表,HWC表上是否有触发器,外键约束等.
囡程序猿 2019-06-18
  • 打赏
  • 举报
回复 1
先判断第一个Update的@@ROWCOUNT 到底有没有更新到,你更新的SPB表,第二个语句又没用到SPB表只是用了临时表TMP_SPB
crazy_boom 2019-06-17
  • 打赏
  • 举报
回复
还有 回答的吗
crazy_boom 2019-05-20
  • 打赏
  • 举报
回复
有大神吗 ? 问题再哪呢 ?
听雨停了 2019-05-20
  • 打赏
  • 举报
回复
Bug是不可能的,就这么一段脚本也看不出什么东西来。你可以把这个修改改成查询试试看能不能得到数据。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧