sql >> Databasteknik >  >> RDS >> Mysql

Hur man testar Välj för uppdatering i MySQL

öppna 2 mysql klientsession.

på session 1:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (result here) ...

1 row in set (0.00 sec)

på session 2:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

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

tillbaka till session 1, för att uppdatera vald post (och släppa låset):

mysql> UPDATE table_name SET something WHERE cond;

mysql> commit;

tillbaka till session 2:

1) antingen visar låset timeout-fel

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

2) eller visar resultat

... (result here) ...

1 row in set (0.00 sec)

3) eller visar inget resultat (eftersom motsvarande post har ändrats, så det angivna villkoret uppfylldes inte)

Empty set (0.00 sec)


  1. Automatisk konvertering av SQL-fråga till ElasticSearch Query

  2. ingen sqljdbc_auth i java.library.path

  3. Hur stor är för stor för ett MySQL-bord?

  4. SQL Injection Protection - enstaka citattecken