1
我想知道如果傳遞給查詢語句的參數lock
實際上會鎖定記錄並避免併發讀取。Ruby on Rails鎖定Sqlite數據庫
例: Query.where(:id => 1, :lock => true)
這是否保證,直到我釋放鎖沒有人會讀這條記錄?
我想知道如果傳遞給查詢語句的參數lock
實際上會鎖定記錄並避免併發讀取。Ruby on Rails鎖定Sqlite數據庫
例: Query.where(:id => 1, :lock => true)
這是否保證,直到我釋放鎖沒有人會讀這條記錄?
locking
的概念適用於update
,而不是read
。當記錄被鎖定時,通常可以查看記錄;更重要的問題是任何人在鎖定時是否可以更新記錄。
您提到的語法將在表中按名稱lock
查找字段。
對於pessimistic locking with rails,語法如下:
Query.where(:id => 1).lock(true)
如在軌道引導說明我的文檔上面鏈接:
悲觀鎖使用由底層數據庫提供了一種鎖定機構。
因此,建議查看數據庫文檔以查看該數據庫提供何種鎖定機制。
在多個rails console
會話中使用鎖定功能時,我能夠從一個窗口更新記錄,而同一個記錄已從另一個窗口鎖定。
所以它看起來不像我的版本的sqlite數據庫不支持鎖定。
不要忘記在當前事務結束時釋放鎖(即,如果沒有顯式事務,則在語句結尾處)。悲觀主義的鎖應該防止進一步讀取 – 2013-02-21 15:02:38