我不確定如何簡潔地問這個問題,所以我會通過情境來解釋它。防止在通過PHP編輯MySQL行時同時覆蓋
用戶A決定他想通過HTML格式修改MySQL行。 同時,用戶B決定他也希望以相同的方式修改相同的MySQL行。
我們會說MySQL的行是一個文本字段,它包含文本,'Can\'t touch this'
兩個用戶沒有eachothers意向的知識。
User-A對MySQL行進行重大更改並將其保存到數據庫。 MySQL行變爲'Can\'t touch this was a popular track by the Hip-Hop artist M.C. Hammer.'
User-B對MySQL行進行小改動並將其保存到數據庫。 MySQL行變爲'Cannot touch this. Please avoid contractions.'
因爲User-B決定在User-A完成其修改之前修改MySQL行,所以修改用戶-A因User-B所做的修改而被覆蓋。
如何允許同時編輯數據庫行的腳本(如MediaWiki或任何其他維基軟件)處理此問題?
AFAIK mediawiki不允許同時編輯其文檔。上次我檢查他們表明是否有人正在編輯文檔,並告訴你避免在此期間進行更改。 – Gal 2011-05-11 19:46:29
幾周前,SO允許同時進行編輯,直接覆蓋以前的編輯,恕不另行通知。目前,該網站發佈了一條錯誤消息,表明其他人編輯了帖子(或提出了編輯),從而不允許我(暫時)保存編輯的消息,讓我浪費時間和精力進行無用的編輯。順便說一句,我想你在倒數第二段中交換了結果。 – 2011-05-11 20:00:14
@sombe這是我以前使用的方法。然而,我發現了一個缺陷,因爲鎖定時間過長,用戶合法地進行長時間編輯會超過然後無法提交,因爲它變得自由並被其他人鎖定。 – Kairu 2011-05-12 02:39:19