加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ActiveRecord事务只是往返数据库1次吗?

发布时间:2020-12-17 03:05:14 所属栏目:百科 来源:网络整理
导读:如果我正在执行一堆查询,包含在Activerecord事务中,那么所有那些查询都会在1次往返中发送到数据库(即所有查询都发送到db,并且响应已发回),或者每个查询是否占用每次1趟? 示例代码: ActiveRecord::Base.transaction do queries.each do |query| ActiveRecor
如果我正在执行一堆查询,包含在Activerecord事务中,那么所有那些查询都会在1次往返中发送到数据库(即所有查询都发送到db,并且响应已发回),或者每个查询是否占用每次1趟?

示例代码:

ActiveRecord::Base.transaction do   
      queries.each do |query|
           ActiveRecord::Base.connection.execute(query)
      end
end

如果是后者,有没有办法强制在一次往返中执行事务中的所有查询?

解决方法

ActiveRecord :: Base.transaction调用将对数据库进行两次调用:

>一个告诉数据库启动事务.
>另一个当块退出时告诉数据库提交或回滚事务.

每个ActiveRecord :: Base.connection.execute调用也与数据库通信.这必须发生,因为您执行的查询可能引发异常或返回有用的数据.通常,每个SQL语句都是对数据库的单独调用(即往返).

但是,只能使用一个数据库连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读