关于并发时逻辑上冲突(不是数据错误)的问题
现在假如库存数据为20,
A 读取, 发现为20, 就UPDATE 数据,申请领出15个,
B 同时读取, 发现有20个, 也申请15个.
因为B在申请之前一定会先读取, 然后申请, 但是假如A的Update 动作刚好发生在B的这两个读取和UPDATE 之间, 则数据会变成负数.
固然, 可以用触发器保证库存不为负, 但是如果触发器拒绝B 的Update, 在程序里却会收到SQL 语句正常执行的结果, 也就是说, 虽然数据没有错误, 但是程序端却认为A 和B 都成功地申请到了15个. ------怎么避免这种问题?
谢谢!!
------解决方案--------------------使用事务,如果不完全执行时返回标识值
------解决方案--------------------必面要用事务处理的.这是事务处理的经典使用案例.
------解决方案--------------------你自己結合鎖的機制選擇一種方法吧。記得好像又一遍分析的比較仔細的貼。你找找