gpt4 book ai didi

ruby-on-rails - 如何使用 ActiveRecord 连接设置事务隔离级别?

转载 作者:数据小太阳 更新时间:2023-10-29 06:32:39 27 4
gpt4 key购买 nike

我需要以一种跨数据库(至少是 SQLite、PostgreSQL、MySQL)可移植的方式在每个事务的基础上管理事务隔离级别。

我知道我可以手动完成,就像那样:

User.connection.execute('SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE')

...但我希望是这样的:

User.isolation_level( :serializable ) do
# ...
end

最佳答案

此功能由 ActiveRecord 本身支持:

MyRecord.transaction(isolation: :read_committed) do
# do your transaction work
end

它支持 ANSI SQL 隔离级别:

  • :read_uncommitted
  • :read_committed
  • :repeatable_read
  • :可序列化

此方法可用since Rails 4 ,当 OP 提出问题时,它不可用。但对于任何像样的现代 Rails 应用程序,这应该是可行的方法。

关于ruby-on-rails - 如何使用 ActiveRecord 连接设置事务隔离级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com