Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So testen Sie Select for Update in MySQL

Öffnen Sie 2 MySQL-Client-Sitzungen.

in Sitzung 1:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (result here) ...

1 row in set (0.00 sec)

in Sitzung 2:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (no result yet, will wait for the lock to be released) ...

zurück zu Sitzung 1, um den ausgewählten Datensatz zu aktualisieren (und die Sperre aufzuheben):

mysql> UPDATE table_name SET something WHERE cond;

mysql> commit;

zurück zu Sitzung 2:

1) Entweder wird ein Sperrzeitüberschreitungsfehler angezeigt

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

2) oder Ergebnis anzeigen

... (result here) ...

1 row in set (0.00 sec)

3) oder kein Ergebnis anzeigen (weil der entsprechende Datensatz geändert wurde, sodass die angegebene Bedingung nicht erfüllt wurde)

Empty set (0.00 sec)