mysql - 在 Rails 中更新计数器,这是否存在并发问题?

标签 mysql ruby-on-rails ruby

假设我允许人们对项目进行投票,我正在这样做:

bid = Bid.new
..
bid.save!


item.total_bids += 1
item.save!

如果多人同时对一件元素出价,这不会有问题吗?

最佳答案

绝对有并发问题。 Rails 提供了 increment_counter 来处理这个:

Item.increment_counter( :total_bids, item.id )

这会在数据库上运行 SQL:

UPDATE items SET total_bids = total_bids + 1 WHERE id = x

详情请看这里: http://api.rubyonrails.org/classes/ActiveRecord/CounterCache.html#method-i-increment_counter

关于mysql - 在 Rails 中更新计数器,这是否存在并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217876/

相关文章:

mysql - 如何在 'IF' 语句中使用 'SELECT' 并在 mysql 上插入

ruby-on-rails - 403 AccessDenied 用于使用 s3cmd 工具上传到 Amazon S3 的回形针附件

javascript - 显示提交按钮,直到错误被删除

ruby-on-rails - Rails mailer 填充模板时未定义的局部变量

ruby-on-rails - Rails 路由语法 - 从 rails 2 到 rails 3

php - 使用 LIKE 将字符串与包含多个单词的字符串进行匹配

php - 使用PHP远程访问MySQL数据库

MySQL查询将数据分组到不同的范围

ruby-on-rails - Rails 实例变量在开发中显示,但在 Heroku 中不显示

ruby-on-rails - Rails 基本搜索和 PostgreSQL