首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于并发时逻辑上冲突(不是数据异常)的有关问题

2012-01-05 
关于并发时逻辑上冲突(不是数据错误)的问题现在假如库存数据为20,A读取,发现为20,就UPDATE数据,申请领出15

关于并发时逻辑上冲突(不是数据错误)的问题
现在假如库存数据为20,
A   读取,   发现为20,   就UPDATE   数据,申请领出15个,
B   同时读取,   发现有20个,   也申请15个.

因为B在申请之前一定会先读取,   然后申请,   但是假如A的Update   动作刚好发生在B的这两个读取和UPDATE   之间,   则数据会变成负数.  

固然,   可以用触发器保证库存不为负,   但是如果触发器拒绝B   的Update,   在程序里却会收到SQL   语句正常执行的结果,   也就是说,   虽然数据没有错误,   但是程序端却认为A   和B   都成功地申请到了15个.   ------怎么避免这种问题?

谢谢!!

[解决办法]
使用事务,如果不完全执行时返回标识值
[解决办法]
必面要用事务处理的.这是事务处理的经典使用案例.
[解决办法]
你自己結合鎖的機制選擇一種方法吧。記得好像又一遍分析的比較仔細的貼。你找找

热点排行