0

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

对于每次购买,商品行中的计数都会增加,以指示购买的数量。我怎样才能控制说 11 个用户都试图购买这个项目@一次?通过简单地锁定该行直到购买完成然后进行比较来实现这一目标的最佳方法是什么?或者有没有一种方法可以做到这一点,而不必不断地从其他用户那里删除结果然后重新激活它们?

4

1 回答 1

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
}

这样,我认为不会出现两个用户同时要求该项目的情况,交易被视为先进先出。

于 2012-06-23T10:50:23.823 回答