所以我有一個數據庫來保存庫存信息。由於工作人員更新該信息是因爲其在線遇到問題,因爲他們在更改號碼時需要最後一個人更新號碼並將其用於所有值。數據庫 - mySQL和PHP更新衝突的更新信息
示例:Joe更新蔓越莓剩下3個,並且在3時仍不接觸沙拉。但john更新了沙拉爲0.當Joe按下更新時,沙拉的值重新設置爲3,因爲他們的系統認爲他是也更新它。
任何方式,我可以解決這個問題??
所以我有一個數據庫來保存庫存信息。由於工作人員更新該信息是因爲其在線遇到問題,因爲他們在更改號碼時需要最後一個人更新號碼並將其用於所有值。數據庫 - mySQL和PHP更新衝突的更新信息
示例:Joe更新蔓越莓剩下3個,並且在3時仍不接觸沙拉。但john更新了沙拉爲0.當Joe按下更新時,沙拉的值重新設置爲3,因爲他們的系統認爲他是也更新它。
任何方式,我可以解決這個問題??
如果兩個用戶使用相同的圖形用戶界面,其中兩個值(小紅莓和沙拉),可以一次性更改(例如,通過按保存按鈕),您可以:
選擇你最喜歡的一個。
哇。愛它。我會試一試,看看它是如何發展的。 –
享受:)。就我個人而言,我最喜歡4號。 – Rafi
我會的,我同意這將是最好的解決方案,但它的使用非常多,如果每次我都會被要求立即刪除它時彈出。大聲笑 –
這是一個常見問題。
您可以:
我想我並不是第一個遇到這個問題的人。我立即想到了LOCK,但是它的使用頻率很高,我不能隨時鎖定任何人。我認爲你的「數量=數量-2」和隱藏值的組合可以檢查是否會解決問題。 –
聲音(有點)像一個併發問題,但也許不是因爲我們正在談論兩個不同的領域。看看鎖定:http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html
你可能希望看看喬如何獲取他的信息,因爲如果仍然設置3沙拉和約翰拿他們,然後喬的觀點不知道三個沙拉都消失了,當他點擊更新(假設他的觀點中他所有的信息都被髮送到數據庫),他無意中將沙拉放回原處。
部分的問題似乎是你的SQL的方式如果用戶沒有改變記錄的值,就不應該有新的寫入t記錄。
通過使用事務,您可以檢查自該進程啓動以來該值是否已更改。這允許您提交或回滾事務,具體取決於結果。
例如,如果用戶A檢查出的5個可用沙拉3。在用戶A完成這個過程之前,用戶B也嘗試檢出5種可用沙拉中的3種。使用事務,您可以提供邏輯來檢查確保有足夠的沙拉在提交之前完成事務。如果檢查失敗,則可以回滾事務。這將阻止用戶B檢出更多可用的沙拉,即使顯示可能已經指示當交易開始時有5個可用。
它不是真的如何建立我的系統,但我會試一試,謝謝! –
你可以發表一些代碼和更深入的描述嗎?蔓越莓沙拉聽起來不錯。 – dudemanbearpig
您可以發佈您正在使用的sql語句,可能沒有使用正確的where語句。 –