假设我要向多个用户提供一个项目,任何用户最多可以购买10个,直到该项目被“停用”。这些项目从mainitems表中获取并过滤到特定用户。
对于每次购买,在项目行中递增计数以指示所进行的购买量。如何控制所有试图购买此项目的11个用户@一次?通过简单地锁定该行直到购买完成然后进行比较,是实现这一目标的最佳方法吗?或者有没有办法我可以做到这一点,而不必不断地从其他用户删除结果,然后重新激活它们?
答案 0 :(得分:1)
您应该使用sql事务
在php中你应该使用try{} catch(){}
语句
try
{
//mysql begin transaction
//the code that does what you said it would do
//mysql commit transaction
}
catch(Exception $ex)
{
//mysql rollback
/return false
}
通过这种方式,我不认为两个用户在交易被处理FIFO的同时要求该项目的情况。