0

我創建了一個rake腳本來向某些用戶發送電子郵件。執行rake腳本時鎖定數據庫

rake腳本首先需要刪除一些舊的數據庫記錄,然後繼續處理電子郵件。

問題在於,在腳本運行期間,一些用戶可能會自己查看/刪除數據。如果腳本刪除了數據,則應刷新視圖以適應新數據。

我能想到的第一個明顯的解決方案是從不在視圖中顯示舊數據,因此避免記錄在刪除後被刪除的可能性。

但我仍然認爲我在這裏有一個競爭條件的可能性,我想知道如何在執行腳本時鎖定數據庫。

我正在使用Mysql作爲我的數據庫系統。

回答

2

我會通過設置一個rake任務來調用模型上的方法來刪除數據庫記錄。然後,我會包裝代碼以刪除transaction中的舊郵件。這將在刪除電子郵件時鎖定數據庫,並允許您處理任何其他人試圖刪除數據時拋出的異常。

+0

謝謝,我遵循你的建議,並使用交易。 – user852689

相關問題