mysql - 如何增加十进制值?

标签 mysql ruby-on-rails ruby ruby-on-rails-4

在表 user 中有一列 points

我想增加它的小数值。

@user = User.find(@ok.user_id)
@user.points = @user.points + 0.8
@user.save

如果我用 + 1 代替 + 0.8 就可以了。

我正在使用 Mysql,该列是 DECIMAL。

最佳答案

如果你想以一种高效、可靠的方式增加:

User.where(id: @ok.user_id).update_all([ 'points=points+?', 0.8 ])

这避免了竞争条件并且不需要加载模型。这里的缺点是您加载的任何模型都已过时,并且在使用它们之前需要使用 reload 进行更新,因为它们的点数已关闭,但这并不是一件坏事。任何数量的修改都可能在后台进行。

关于mysql - 如何增加十进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388465/

相关文章:

Android json插入到sqlite中的数据过多

ruby-on-rails - 从 Rails 到 Phoenix 共享身份验证/数据?

ruby-on-rails - 让 RubyMine 调试器与 Docker 一起使用的问题

ruby-on-rails - Rails I18n 中的惰性查找是一种不好的做法吗?

ruby-on-rails - 为什么这个事务在 ActiveRecord 中不起作用?

ruby-on-rails - 如何在没有 3rd 方工具的情况下生成网站缩略图?

java - Hibernate JPA,连接多个表

php - 使用组检索最新记录

ruby - Ruby 中的递归。我这样做正确吗?

php - MySQL - 获得 Markdown 产品