module Clear::SQL::Query::Lock

Direct including types

Defined in:


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

#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]