在我的應用程序中,我搜索我的庫存表中可用的產品,選擇它們,然後將庫存ID插入到我的物料表中。兩個用戶可以在mysql的同一行上工作嗎?
SELECT & INSERT是兩種不同的操作。另一個用戶是否有可能搶奪相同的檢索行並使用它們將相同的庫存產品分配給不同的項目?
在我的應用程序中,我搜索我的庫存表中可用的產品,選擇它們,然後將庫存ID插入到我的物料表中。兩個用戶可以在mysql的同一行上工作嗎?
SELECT & INSERT是兩種不同的操作。另一個用戶是否有可能搶奪相同的檢索行並使用它們將相同的庫存產品分配給不同的項目?
答案是肯定的。
假設您不希望發生這種情況,您應該考慮將兩個操作包裝到事務中。我認爲交易從第4版開始就可以在MySQL中使用。
...如果你使用InnoDB引擎。 – 2010-09-15 10:29:42
是的,但它們僅適用於INNODB,MyISAM不是跨轉換的。 – cichy 2010-09-15 10:30:22
要直接回答你的問題,是的,儘管它可能取決於你如何設計數據庫。如果發生此類危險,您可能會考慮記錄鎖以防止訪問正在分配過程中的項目。
你可能會發現它值得查找「事務隔離」和「記錄鎖定」。
http://www.expresscomputeronline.com/20040426/techspace01.shtml
希望你應該得到的鎖和交易有何不同的理解。
查看原子性。 – 2010-09-15 10:22:30