sql >> Database >  >> RDS >> Mysql

Selecteren voor update testen in MySQL

open 2 mysql-clientsessie.

op sessie 1:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

... (result here) ...

1 row in set (0.00 sec)

op sessie 2:

mysql> start transaction;

mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;

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

terug naar sessie 1, om de geselecteerde record bij te werken (en de vergrendeling los te maken):

mysql> UPDATE table_name SET something WHERE cond;

mysql> commit;

terug naar sessie 2:

1) ofwel toont de time-outfout bij het vergrendelen

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

2) of resultaat weergeven

... (result here) ...

1 row in set (0.00 sec)

3) of zonder resultaat (omdat de corresponderende record is gewijzigd, dus aan de gespecificeerde voorwaarde is niet voldaan)

Empty set (0.00 sec)


  1. Momentopname van EBS-volume dat wordt gebruikt voor replicatie

  2. Hoe WordPress te installeren:de serversoftware

  3. Niet-primaire externe sleutels in Django

  4. Welk MySQL-gegevenstype moet worden gebruikt voor breedtegraad/lengtegraad met 8 decimalen?