gpt4 book ai didi

ruby-on-rails - activerecord 一次锁定多行

转载 作者:行者123 更新时间:2023-12-04 06:09:38 24 4
gpt4 key购买 nike

我正在尝试更新符合某些条件的表中的几行(即 some_col = "foo"的所有行)。我想将此更新作为事务的一部分,其中我在所有这些行上以共享模式获取锁,逐行更新并释放共享锁。

到目前为止我读过的文档讨论了如何锁定 ActiveRecord 中的单个行。但这会使事情变得低效,因为我必须首先执行一些 .where(...) 查询,遍历每一行,并锁定它(从数据库中重新获取行)。所以我将每行两次数据库提取......

我想知道在 .where(...) 查询本身中锁定符合特定条件的所有行的最佳方法是什么。这可能吗?如果没有,是否有更好的方法来更有效地锁定某组行。锁定表不是一种选择。

谢谢!

最佳答案

尝试这个

http://guides.rubyonrails.org/active_record_querying.html#pessimistic-locking

我假设您的模型是 Item就像在示例中一样,执行以下操作:

Item.lock.joins ....

等等。并构建您想要的选择,以便将所有行置于大 View /结果中。

这可能就是你想要的。

关于ruby-on-rails - activerecord 一次锁定多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com