0
我需要爲教師創造一個微小的預訂系統。他打算在某個特定時間上線多個項目主題,並且學生可以分別選擇一個主題。MySQL我需要鎖表嗎?
讓我們假定有一個具備兩列「主題」和「name_of_student」的表。我將學生姓名分配到使用UPDATE話題,但想避免的情況是兩個人預訂同一主題在同一時間。
我應該擔心或不MySQL的防止?或者我應該明確使用某種鎖定機制,如果是的話,究竟是什麼?
我需要爲教師創造一個微小的預訂系統。他打算在某個特定時間上線多個項目主題,並且學生可以分別選擇一個主題。MySQL我需要鎖表嗎?
讓我們假定有一個具備兩列「主題」和「name_of_student」的表。我將學生姓名分配到使用UPDATE話題,但想避免的情況是兩個人預訂同一主題在同一時間。
我應該擔心或不MySQL的防止?或者我應該明確使用某種鎖定機制,如果是的話,究竟是什麼?
如果兩個學生來自不同的地方訪問數據庫,你不能只是UPDATE
表,因爲你可能會覆蓋第一個人的預約。
在這種情況下,通常的策略是增加一個WHERE
子句檢查主題仍然是可用的時候,你正在做最後處理,例如而不是
UPDATE topics SET name_of_student = 'Bonzoq' WHERE topic_id = 1
你會寫
UPDATE topics SET name_of_student = 'Bonzoq' WHERE topic_id = 1
AND name_of_student IS NULL
,並檢查受影響的記錄數等於1。如果它等於0,則UPDATE
失敗,因爲name_of_student
不NULL
了。