C> C> CREATE TABLE test( -> id integer PRIMARY KEY, -> data varchar(255) not null, -> version integer not null -> ); Query OK, 0 rows affected (0.00 sec) C> INSERT INTO test(id,data,version) VALUES (1,'fred',0); Query OK, 1 row affected (0.00 sec) C> BEGIN; Query OK, 0 rows affected (0.00 sec) C> LOCK TABLES test WRITE; Query OK, 0 rows affected (0.00 sec) A> BEGIN; Query OK, 0 rows affected (0.00 sec) A> UPDATE test SET data = 'winnerA', -> version = version + 1 -> WHERE id = 1 AND version = 0; Query OK, 0 rows affected (16.54 sec) B> BEGIN; Query OK, 0 rows affected (0.00 sec) B> UPDATE test SET data = 'winnerB', -> version = version + 1 -> WHERE id = 1 AND version = 0; Query OK, 1 row affected (4.60 sec) C> UNLOCK TABLES; Query OK, 0 rows affected (0.00 sec) B> Rows matched: 1 Changed: 1 Warnings: 0 B> SELECT * FROM test; +----+---------+---------+ | id | data | version | +----+---------+---------+ | 1 | winnerB | 1 | +----+---------+---------+ 1 row in set (0.00 sec) B> COMMIT; Query OK, 0 rows affected (0.00 sec) A> Rows matched: 0 Changed: 0 Warnings: 0 A> COMMIT; Query OK, 0 rows affected (0.00 sec) C> SELECT * FROM test; +----+---------+---------+ | id | data | version | +----+---------+---------+ | 1 | winnerB | 1 | +----+---------+---------+ 1 row in set (0.00 sec)