读书人

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

发布时间: 2012-01-05 22:36:54 作者: rapoo

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

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

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

谢谢!!

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

读书人网 >SQL Server

热点推荐