我需要以跨数据库(至少是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/