数码资讯
Laravel Models 使用乐观锁
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
乐观锁定允许多个用户访问同一记录进行编辑,并假定与数据的冲突最少。它通过检查自打开记录以来是否有其他进程对记录进行了更改来执行此操作。一ActiveRecord::StaleObjectError,如果已发生异常被抛出,并且更新被忽略。
乐观锁柱
为了使用乐观锁定,表需要有一个称为lock_version整数类型的列。每次更新记录时,活动记录都会增加该lock_version列。如果在lock_version字段中提出的更新请求的值比lock_version数据库中当前列中的值小,则更新请求将失败,并带有ActiveRecord::StaleObjectError。例:
c1 = Client.find(1) c2 = Client.find(1) c1.first_name = "Michael" c1.save c2.name = "should fail"c2.save # Raises an ActiveRecord::StaleObjectError
然后,您负责通过抢救异常并回滚,合并或以其他方式应用解决冲突所需的业务逻辑来处理冲突。
可以通过设置关闭此行为ActiveRecord::Base.lock_optimistically = false。
要覆盖lock_version列的名称,请ActiveRecord::Base提供一个名为的类属性locking_column:
class Client < ApplicationRecord self.locking_column = :lock_client_column end
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。