我有一個php/MYSQL網站,供學生在宴會上選擇餐位。一旦獲得10個席位,表格就不再可用。我怎樣才能防止兩個或更多的學生同時預定一個座位&最多3位客人?看起來,如果兩名學生同時進入&試圖在同一張桌子上預訂座位,數據就會過度或者可以分配超過10個座位。我需要一種方法來確保第二個用戶能夠編寫他的選擇之前,第一個嘗試預訂席位的席位可以寫入數據庫?任何幫助,將不勝感激。防止同時用戶覆蓋MYSQL數據
1
A
回答
1
這樣做
UPDATE Seating SET AvailableSeats = AvailableSeats - 4 WHERE TableId = 5 AND AvailableSeats = 7;
哪裏7
從早期讀了。如果此更新失敗,則在此期間您知道有其他人分配了席位。
-1
我會檢查在調用代碼進行預訂之前,可用性是否仍然存在,類似於;
if (functionToCheckAvailability(number_of_seats)) {
bookSeats(number_of_seats);
}
相關問題
- 1. 防止Mysql的被覆蓋的數據
- 2. 防止在通過PHP編輯MySQL行時同時覆蓋
- 3. 如何防止用戶覆蓋對方的數據
- 4. 如何防止覆蓋以前的數據時,多用戶上傳相同的記錄在MySQL?
- 5. 使用numpy.savetxt時防止覆蓋
- 6. 防止在調用writeToFile時覆蓋:
- 7. 更新時防止覆蓋數據庫ClickOnce應用程序
- 8. 防止在部署時覆蓋文件?
- 9. 防止覆蓋其他Div
- 10. 防止惡意覆蓋JQuery
- 11. 防止覆蓋文件
- 12. 防止文件被覆蓋
- 13. Android通知防止覆蓋
- 14. 防止覆蓋ADBannerView的UIPopoverController
- 15. 防止window.onload被覆蓋javascript
- 16. 防止覆蓋文件中
- 17. 防止在Neo4J圖形數據庫中覆蓋數據
- 18. 防止R中的函數覆蓋
- 19. 防止覆蓋運行函數
- 20. 使用Git防止文件覆蓋
- 21. 覆蓋mysql表數據
- 22. xforms:如何防止xxforms:覆蓋用戶輸入的默認值
- 23. 防止用戶覆蓋svn中的對方工作
- 24. 防止用戶管理頁面上的密碼覆蓋
- 25. 如何防止rspec覆蓋測試數據庫
- 26. 如何防止Air for android SQLite數據庫被覆蓋?
- 27. 我可以防止Firebase set()覆蓋現有數據嗎?
- 28. 防止線程特定的數據被覆蓋C
- 29. 如何防止意外覆蓋已經存在的數據庫?
- 30. 防止文本框覆蓋以前的數據
+1此解決方案可行。然而,如果你想保留4個席位,我會把'AND Available Seats> = 4'放在裏面,因爲我們並不關心只要有足夠的席位,可用席位的數量是否已經改變。此更新會在記錄上獲得排它鎖定,因此沒有其他查詢甚至可以選擇它。這解決了併發問題。檢查受影響的行數,看看是否成功保留座位。 –