ouvrez 2 sessions client mysql.
sur la séance 1 :
mysql> start transaction;
mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;
... (result here) ...
1 row in set (0.00 sec)
sur la séance 2 :
mysql> start transaction;
mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;
... (no result yet, will wait for the lock to be released) ...
retour à la session 1, pour mettre à jour l'enregistrement sélectionné (et libérer le verrou) :
mysql> UPDATE table_name SET something WHERE cond;
mysql> commit;
retour à la séance 2 :
1) soit afficher une erreur de délai d'attente de verrouillage
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
2) ou montrant le résultat
... (result here) ...
1 row in set (0.00 sec)
3) ou ne montrant aucun résultat (parce que l'enregistrement correspondant a été modifié, la condition spécifiée n'a donc pas été remplie)
Empty set (0.00 sec)