數據庫模式:booking_number(初級,不能自動增量),費(浮動),...等如何鎖定數據庫表中的CakePHP
的「booking_number」是每一個插入到遞增。 這不會由數據庫本身自動遞增。 「booking_number」必須在代碼中增加,並且由於其他原因無法自動完成。
如果我想插入一行,我將讀取最後一個 「booking_number」,將其增加並將新行寫回數據庫。 同時另一個用戶也插入一行,他閱讀 最後一項「booking_number」,與我閱讀的一樣,因爲我沒有 還寫了新的一行。他也會增加到相同的數值,並將其寫回。這將導致衝突。
因此,如果我可以鎖定數據庫表,則其他人無法讀取/寫入 表,直到有人完成讀取和寫入新行。
我可以在cakephp中鎖定數據庫表嗎? 我在哪裏可以得到參考書或代碼?
任何幫助表示讚賞!
您可能不需要_lock_表這一點。按照您的描述運行您的代碼。當第二個進程嘗試添加具有相同值的新行時,重複鍵錯誤可以是_caught_。當_caught_時,重新執行。 – AgRizzo
邑,我也這麼想。可以通過創建視圖/錯誤/ pdo_error.ctp來自定義錯誤消息。並顯示消息重試customer.Right? @AgRizzo – fiona