以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  事务执行咨询  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157661)

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



--  作者:有点蓝
--  发布时间:2020/10/24 16:53:00
--  
这种测试就知道了。正常情况下都是排他锁,第一个人的事务未完成时第二人未必可以读取数据的。自己跟踪一下数据库的锁情况:https://www.baidu.com/baidu?word=SqlServer+查看锁