Mysql
 sql >> Database >  >> RDS >> Mysql

Come testare Seleziona per l'aggiornamento in MySQL

aprire 2 sessioni client MySQL.

nella sessione 1:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (result here) ...

1 row in set (0.00 sec)

nella sessione 2:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

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

torna alla sessione 1, per aggiornare il record selezionato (e rilasciare il blocco):

mysql> UPDATE table_name SET something WHERE cond;

mysql> commit;

torna alla sessione 2:

1) che mostra un errore di timeout del blocco

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

2) o mostrando il risultato

... (result here) ...

1 row in set (0.00 sec)

3) o non mostra alcun risultato (perché il record corrispondente è stato modificato, quindi la condizione specificata non è stata soddisfatta)

Empty set (0.00 sec)