首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新所有检查是否成功工作

更新所有检查是否成功工作
EN

Stack Overflow用户
提问于 2016-05-11 22:12:56
回答 2查看 262关注 0票数 0

我正在使用update_all更新数据库中的信息

首先,我的SQL看起来像这样。

代码语言:javascript
复制
UPDATE "users" SET "tag" = 'D', "fencing_token" = 199,  WHERE "user"."id" = $1 AND (fencing_token < 199)  [["id", 143]]

请注意where子句fencing_token

现在我的update_all看起来像这样

代码语言:javascript
复制
User.where(id: 143).where('fencing_token < ?',199).update_all({tag: 'D',fencing_token: 199})

有没有办法知道下面的SQL查询是否影响了行。

我看到update_all返回true/false作为执行的输出。

有问题吗?

我是否可以考虑返回值,以了解查询是否影响了行(如果为真),否则不会。

EN

回答 2

Stack Overflow用户

发布于 2016-05-11 22:30:58

(如果不是直接在生产环境中运行查询)

检查是否找到任何包含fencing_token < 199的记录,如下所示:

代码语言:javascript
复制
User.where(id: 143).where('fencing_token < ?',199)

你应该不会得到任何记录。

票数 0
EN

Stack Overflow用户

发布于 2016-05-11 23:49:36

在ActiveRecord::Relation对象上运行update_all将返回受更新影响的行数(整数)。因此,如果您期望一个查询结果,并且update_all的输出为1,则可以认为该记录受到了影响。

我不知道您的应用程序,但是如果用户id对于该用户记录是唯一的,那么在Rails中更传统的做法是通过执行User.find(143),然后使用update方法而不是update all来检索它,因为您将只更新一条记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37165289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档