TheLangoliers 2014-02-24 03:53
浏览 848

一个关于事务并发的问题

银行有两个客户
银行总存款 表: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、到底是怎么控制的- -。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题
    • ¥15 Visual Studio问题
    • ¥20 求一个html代码,有偿