Optimistic Lock

6.1.Optimistic Lock

To enable object optimistic lock, add ‘version’ tag value:

  1. type User struct {
  2. Id int64
  3. Name string
  4. Version int `xorm:"version"`
  5. }

The version starts with 1 when inserted to DB. For updating make sure originated version value is used for optimistic lock check.

  1. var user User
  2. engine.ID(1).Get(&user)
  3. // SELECT * FROM user WHERE id = ?
  4. engine.ID(1).Update(&user)
  5. // UPDATE user SET ..., version = version + 1 WHERE id = ? AND version = ?