Module: Sequel::Plugins::MssqlOptimisticLocking
- Defined in:
- lib/sequel/plugins/mssql_optimistic_locking.rb
Overview
This plugin implements optimistic locking mechanism on Microsoft SQL Server using a timestamp/rowversion column to ensure that concurrent updates are detected and previous changes are not automatically overridden. This is best implemented by a code example:
class Person < Sequel::Model
plugin :mssql_optimistic_locking
end
p1 = Person[1]
p2 = Person[1]
p1.update(:name=>'Jim') # works
p2.update(:name=>'Bob') # raises Sequel::NoExistingObject
In order for this plugin to work, you need to make sure that the database table has a column of timestamp or rowversion. The plugin uses a default name of timestamp for this columns, but you can override that using the :lock_column option:
plugin :mssql_optimistic_locking, :lock_column=>:column_name
This plugin relies on the instance_filters plugin.
Defined Under Namespace
Modules: ClassMethods, InstanceMethods
Class Method Summary collapse
-
.apply(model, opts = OPTS) ⇒ Object
Load the instance_filters plugin into the model.
-
.configure(model, opts = OPTS) ⇒ Object
Set the lock_column to the :lock_column option (default: :timestamp).
Class Method Details
.apply(model, opts = OPTS) ⇒ Object
Load the instance_filters plugin into the model.
26 27 28 |
# File 'lib/sequel/plugins/mssql_optimistic_locking.rb', line 26 def self.apply(model, opts=OPTS) model.plugin :instance_filters end |
.configure(model, opts = OPTS) ⇒ Object
Set the lock_column to the :lock_column option (default: :timestamp)
31 32 33 |
# File 'lib/sequel/plugins/mssql_optimistic_locking.rb', line 31 def self.configure(model, opts=OPTS) model.lock_column = opts[:lock_column] || :timestamp end |