以文本方式查看主题 - 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(在第一个人完成数据更新前,获取数据了,此时获取数据就有误了)。 该怎么优化程序啊?
|
||||
-- 作者:有点蓝 -- 发布时间:2020/10/24 16:53:00 -- 这种测试就知道了。正常情况下都是排他锁,第一个人的事务未完成时第二人未必可以读取数据的。自己跟踪一下数据库的锁情况:https://www.baidu.com/baidu?word=SqlServer+查看锁 |