Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment tester Select for Update dans MySQL

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)