Foxtable(狐表)用户栏目专家坐堂 → 事务执行咨询


  共有3145人关注过本帖树形打印复制链接

主题:事务执行咨询

帅哥哟,离线,有人找我吗?
guosheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
事务执行咨询  发帖心情 Post By:2020/10/24 16:07:00 [只看该作者]

1、有两张 《余额表》和《余额表变动明细表》
2、用《余额表变动明细表》来记录《余额表》中每行记录的变化。
余额表
ccode         余额
100101      100
问题:假设事务同时被两个人提交,由于事务涉及的行会禁止编辑,但是可以读取,因此可能造成数据获取有误。
第一个人先提交事务,把余额 由 100变成80;即:变动前余额100,变动后余额为80。
而第二个人后提交事务(在第一个人完成的前提下,变动前余额80,变动后余额为60),第一个人的事务虽然未完成,但是第二人可以读取数据,此时第二人获取的变动前的余额是100(在第一个人完成数据更新前,获取数据了,此时获取数据就有误了)。
该怎么优化程序啊?
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:新建文本文档.txt



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/24 16:53:00 [只看该作者]

这种测试就知道了。正常情况下都是排他锁,第一个人的事务未完成时第二人未必可以读取数据的。自己跟踪一下数据库的锁情况:https://www.baidu.com/baidu?word=SqlServer+查看锁

 回到顶部