Module Sequel::Plugins::MssqlOptimisticLocking
In: lib/sequel/plugins/mssql_optimistic_locking.rb

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.

Methods

apply   configure  

Classes and Modules

Module Sequel::Plugins::MssqlOptimisticLocking::ClassMethods
Module Sequel::Plugins::MssqlOptimisticLocking::InstanceMethods

Public Class methods

Load the instance_filters plugin into the model.

[Source]

    # File lib/sequel/plugins/mssql_optimistic_locking.rb, line 26
26:       def self.apply(model, opts=OPTS)
27:         model.plugin :instance_filters
28:       end

Set the lock_column to the :lock_column option (default: :timestamp)

[Source]

    # File lib/sequel/plugins/mssql_optimistic_locking.rb, line 31
31:       def self.configure(model, opts=OPTS)
32:         model.lock_column = opts[:lock_column] || :timestamp
33:       end

[Validate]