对于Rails 4.1.1,使用mysql2适配器:
我正在使用ActiveRecordconnection
在MySQL表中执行多次插入:
ActiveRecord::Base.connection.execute %Q{
INSERT INTO table (`user_id`, `item_id`)
SELECT 1, id FROM items WHERE items.condition IS NOT NULL
}
这样可以很好地完成工作并返回nil
。
有没有一种方法来获取受影响的行数?(避免执行另一个查询)
我发现该execute
方法的文档有些稀疏。
您可以使用connection.update
执行表达式并返回受影响的行数的方法。
ActiveRecord::Base.connection
.update("INSERT INTO accounts (`name`) VALUES ('first'), ('second')")
=> 2
轨v4.2.7 DOC - http://api.rubyonrails.org/v4.2.7/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-update
Rails最新文档-http: //api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-update
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句