sql >> Base de Datos >  >> RDS >> Mysql

Cómo probar Select for Update en MySQL

abrir 2 sesión de cliente mysql.

en la sesión 1:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (result here) ...

1 row in set (0.00 sec)

en la sesión 2:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

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

volver a la sesión 1, para actualizar el registro seleccionado (y liberar el bloqueo):

mysql> UPDATE table_name SET something WHERE cond;

mysql> commit;

volver a la sesión 2:

1) mostrando un error de tiempo de espera de bloqueo

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

2) o mostrando resultado

... (result here) ...

1 row in set (0.00 sec)

3) o no muestra ningún resultado (porque se modificó el registro correspondiente, por lo que no se cumplió la condición especificada)

Empty set (0.00 sec)