我正在運行多線程應用程序,並且遇到問題,而不同線程嘗試訪問特定表中的相同記錄。MySQL選擇更新並插入
線程A - 想因此,從表「LastOperations」最後一個記錄做了選擇用於更新ORDER BY ID DESC LIMIT 1 - 創建基於在LastOpertaions表的最後一條記錄的新紀錄,並插入回到它。
線程B - 想最後一個記錄表「LastOperations」,因此不
兩個線程都被相同的代碼相同的活動主題A.。只是使用不同的數據。此表上的最大活動線程數爲4-6。
問題 如果線程A鎖定最後一條記錄,並且標識號爲1000,則線程B將取999條記錄並向表中添加新條目。 ID字段是一個自動增量,它也是主鍵。
說線程1正在購買原材料A而線程b正在購買原材料B.兩者都應該通過採用最新條目從同一個賬戶中扣除。發生什麼事情是一個線程從帳戶進入較舊的帳戶,導致帳戶餘額錯誤。
關於我失蹤的任何建議?數據庫端需要進行哪些更改?
真正的問題似乎是,你自己生成的ID。讓數據庫爲你做這件事 –
從你的問題來看你想要做什麼並不明確。這兩個線程是否真的在做同樣的事情?您指出線程B執行與線程A相同的活動。 – jhenderson2099
ID由數據庫自動遞增。 – kris123456