假设我有一个PHP代码,其中包含将在事务中执行的这些步骤:
- 获取表格中字段的值
- 检查值,如果超过10,则继续执行步骤4
- 使用
UPDATE A SET amount = amount - 1
等MySQL运算符减少一个单位的值
- 结束
醇>
现在假设提到的值为11,如果我们有2个并行请求同时执行此代码,请求号1和请求号2。
- no.1获取值,而no.2同时获取值
- no.1检查该值,现在它将超过10,它将减少一个单位,DB中的新值将为10
- no.2将检查自己已经获得它的值,并且它再次超过10,但在更新DB中的新值后将是9,这是无效的
我应该怎样做以防止这种情况发生?