使用Rails 4.1.1,使用mysql2适配器:
我使用ActiveRecord connection
在MysqL表中执行多次插入:
ActiveRecord::Base.connection.execute %Q{
INSERT INTO table (`user_id`,`item_id`)
SELECT 1,id FROM items WHERE items.condition IS NOT NULL
}
这工作正常,完成工作,并返回零.
有没有办法获得受影响的行数?
(避免执行另一个查询)
最佳答案
您可以使用connection.update方法执行表达式并返回受影响的行计数.
ActiveRecord::Base.connection
.update("INSERT INTO accounts (`name`) VALUES ('first'),('second')")
=> 2
Rails 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