我已经开发了一个库存系统。
显然,由于某些未知的原因(仍在弄清楚),库存的减少导致库存数量为负。
用户说,如果多个用户尝试分配仅剩1个盘点的广告资源,则可能会发生这种情况。
我已经预见到了这一点,但它仍在发生。
我的功能是这样的:
$request contains all item to be deducted, it has item_id and quantity
$employee is the user who will do the transaction
function applyInvoice($request, $employee) {
** gets all items and its current stock ** (basesd on the item_ids in the request)
** for each items **
** if current stock is less than the quantity to be deducted
** error: insufficient stock **
** end for each **
** if no errors **
** update quantity, deduct inventory **
** else **
** return error **
}
这就是应用程序逻辑,即使对于未知情况,它也会扣除导致负计数的数量。
我的应用程序逻辑有问题吗? mysql默认情况下是否为同步更新提供锁定?