1
我想更新匹配一些條件(即所有行some_col =「foo」)的表中的幾行。我想做這個更新作爲事務的一部分,其中我在所有這些行上以共享模式獲取鎖,逐行更新並釋放共享鎖。activerecord一次鎖定幾行
到目前爲止,我所閱讀的文檔都討論瞭如何鎖定ActiveRecord中的各個行。但是,這將讓事情變得低效,因爲我必須先執行一些。凡(...)查詢,通過每一行迭代,並鎖定(從數據庫中重新提取行)。因此,我將有兩個每行分貝取...
我想知道什麼是鎖定的。哪裏(...)查詢本身符合一定的標準,所有行的最好方式。這可能嗎?如果沒有,是否有更好的方法來更有效地鎖定某一組行。鎖定表格不是一個選項。
謝謝!
這是否適用於.where方法?我只需要在一個表中選擇多行,所以我不想承擔連接的開銷。我嘗試使用Item.lock.where(:條件),但它不起作用。建議? – deruse
它應該工作。我剛剛在我的一個項目上嘗試過,並且工作正常。當你說它不起作用時會出現什麼錯誤? –
Nvm你正確的工作。 – deruse