diff options
author | Jon Leighton <j@jonathanleighton.com> | 2012-09-21 16:14:42 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2012-09-21 16:32:27 +0100 |
commit | 392eeecc11a291e406db927a18b75f41b2658253 (patch) | |
tree | 985fa3eadbd3be740759568eb32d124eb86f6fbd /Gemfile | |
parent | 834d6da54e459f6354fe7b349779d690652cc7a8 (diff) | |
download | rails-392eeecc11a291e406db927a18b75f41b2658253.tar.gz rails-392eeecc11a291e406db927a18b75f41b2658253.tar.bz2 rails-392eeecc11a291e406db927a18b75f41b2658253.zip |
Support for specifying transaction isolation level
If your database supports setting the isolation level for a transaction,
you can set it like so:
Post.transaction(isolation: :serializable) do
# ...
end
Valid isolation levels are:
* `:read_uncommitted`
* `:read_committed`
* `:repeatable_read`
* `:serializable`
You should consult the documentation for your database to understand the
semantics of these different levels:
* http://www.postgresql.org/docs/9.1/static/transaction-iso.html
* https://dev.mysql.com/doc/refman/5.0/en/set-transaction.html
An `ActiveRecord::TransactionIsolationError` will be raised if:
* The adapter does not support setting the isolation level
* You are joining an existing open transaction
* You are creating a nested (savepoint) transaction
The mysql, mysql2 and postgresql adapters support setting the
transaction isolation level. However, support is disabled for mysql
versions below 5, because they are affected by a bug
(http://bugs.mysql.com/bug.php?id=39170) which means the isolation level
gets persisted outside the transaction.
Diffstat (limited to 'Gemfile')
0 files changed, 0 insertions, 0 deletions