在我的应用程序中,我搜索库存表中可用的产品,选择它们,然后将inventoryID插入到我的项目表中。
SELECT& INSERT是两种不同的操作。是否有可能同时另一个用户抢夺检索到的相同行并使用它们将相同的库存产品分配给不同的项目?
答案 0 :(得分:3)
答案是肯定的。
假设您不希望发生这种情况,您应该考虑将这两个操作包装到事务中。我认为从版本4开始,MySQL中就可以使用事务。
答案 1 :(得分:0)
直接回答您的问题,是的,但这可能取决于您如何设计数据库。如果存在发生这种情况的危险,您可以考虑使用记录锁定来防止访问您在分配过程中的项目。
您可能会发现值得查找“事务隔离”以及“记录锁定”。
http://www.expresscomputeronline.com/20040426/techspace01.shtml
希望您应该了解锁和交易的不同之处。