多个用户试图一次购买物品,锁定行?

时间:2012-06-23 10:37:47

标签: php mysql

假设我要向多个用户提供一个项目,任何用户最多可以购买10个,直到该项目被“停用”。这些项目从mainitems表中获取并过滤到特定用户。

对于每次购买,在项目行中递增计数以指示所进行的购买量。如何控制所有试图购买此项目的11个用户@一次?通过简单地锁定该行直到购买完成然后进行比较,是实现这一目标的最佳方法吗?或者有没有办法我可以做到这一点,而不必不断地从其他用户删除结果,然后重新激活它们?

1 个答案:

答案 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的同时要求该项目的情况。