use*_*270 14 locking ruby-on-rails pessimistic
假设我正在做这样的事情(来自Active Record Querying指南)
Item.transaction do
i = Item.first(:lock => true)
i.name = 'Jones'
i.save
end
Run Code Online (Sandbox Code Playgroud)
是否在交易结束时自动释放锁定?我查看了Active Query指南和ActiveRecord :: Locking :: Pessimistic文档,但无法找到明确说明锁定释放位置的位置.
小智 5
是的,锁在事务结束时自动释放,因为这种锁仅适用于事务.在事务之外以这种方式(悲观锁定)锁定记录是没有意义的.
悲观锁在DB级别上强制执行.
以下是mysql示例的说明:http: //dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html