2010-09-15 85 views
2

在我的应用程序中,我搜索我的库存表中可用的产品,选择它们,然后将库存ID插入到我的物料表中。两个用户可以在mysql的同一行上工作吗?

SELECT & INSERT是两种不同的操作。另一个用户是否有可能抢夺相同的检索行并使用它们将相同的库存产品分配给不同的项目?

+0

查看原子性。 – 2010-09-15 10:22:30

回答

3

答案是肯定的。

假设您不希望发生这种情况,您应该考虑将两个操作包装到事务中。我认为交易从第4版开始就可以在MySQL中使用。

+0

...如果你使用InnoDB引擎。 – 2010-09-15 10:29:42

+0

是的,但它们仅适用于INNODB,MyISAM不是跨转换的。 – cichy 2010-09-15 10:30:22

0

要直接回答你的问题,是的,尽管它可能取决于你如何设计数据库。如果发生此类危险,您可能会考虑记录锁以防止访问正在分配过程中的项目。

你可能会发现它值得查找“事务隔离”和“记录锁定”。

http://www.expresscomputeronline.com/20040426/techspace01.shtml

希望你应该得到的锁和交易有何不同的理解。

相关问题