2 tim493332426 tim493332426 于 2014.02.24 11:53 提问

一个关于事务并发的问题

银行有两个客户
银行总存款 表:T_Money 字段:totalMoney:1000
客户一对应 T1 取走100
declare decimal(12,4) @totalMoney;
select @totalMoney=totalMoney from T_Money
update T_Money set totalMoney= @totalMoney-100

客户一对应 T2 取走50
declare decimal(12,4) @totalMoney;
select @totalMoney=totalMoney from T_Money
update T_Money set totalMoney= @totalMoney-50

假如T1 T2并发了
两个是否的@totalMoney都读了1000
假如T1先更新把totalMoney更新为900了,T2后更新,因为读到的totalMoney为1000所以把totalMoney更新为950了,实际上应该两个事务执行完,正确的totalMoney为850

问:
1、这样的情况乐观的并发能控制到么?
2、事务隔离级别能控制到么?
3、到底是怎么控制的- -。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!