module Clear::SQL::Query::Lock

Direct including types

Defined in:

clear/sql/query/lock.cr

Instance Method Summary

Instance Method Detail

def clear_lock #

remove lock directive.


[View source]
def with_lock(str : String = "FOR UPDATE") #

You can use lock using #with_lock method on query collection:

Clear::SQL.transaction do
  # SELECT * FROM users WHERE organization = 'Crystal Lang' FOR UPDATE
  User.where(organization: "Crystal Lang").with_lock.each do |user|
    # Do something with your users
  end
end

#with_lock offers optional parameters \(default: "FOR UPDATE"\), to setup the lock options you want \(ex: #with_lock("FOR UPDATE SKIP LOCKED")\)

See PostgreSQL deep explanation about locking here.

{% hint style="warning" %} Locking works only in transaction. {% endhint %}


[View source]