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)