# Locks ### Model lock You can use lock using `with_lock` method on query collection: ```ruby 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](https://www.postgresql.org/docs/current/explicit-locking.html). {% hint style="warning" %} Lock work only inside transaction. Without transaction block, the call might fail. {% endhint %}