Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como testar a seleção para atualização no MySQL


abra 2 sessões do cliente mysql.

na sessão 1:
mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (result here) ...

1 row in set (0.00 sec)

na sessão 2:
mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

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

de volta à sessão 1, para atualizar o registro selecionado (e liberar o bloqueio):
mysql> UPDATE table_name SET something WHERE cond;

mysql> commit;

de volta à sessão 2:

1) mostrando erro de tempo limite de bloqueio
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

2) ou mostrando resultado
... (result here) ...

1 row in set (0.00 sec)

3) ou não mostrando resultado (porque o registro correspondente foi modificado, então a condição especificada não foi atendida)
Empty set (0.00 sec)