我需要以跨数据库(至少是sqlite、postgresql、mysql)移植的方式来管理每个事务的事务隔离级别。
你能推荐一个增强activerecord数据库连接适配器的gem吗?
我知道我可以手动完成,就像这样:

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
:serializable
此方法可用since Rails 4,操作人员提问时它不可用。但对于任何体面的现代rails应用程序来说,这应该是一条路。

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

10-11 17:25