Vous devez verrouiller chaque table , que vous souhaitez utiliser jusqu'au LOCK
est libérée. Vous pouvez donner completely_different_table_2
seulement un READ LOCK
, ce qui permet à d'autres processus de lire cette table lorsqu'elle est verrouillée :
LOCK TABLES table_1 WRITE, completely_different_table_2 READ;
PS :MySQL a une raison de le faire. Si vous demandez un LOCK
, vous souhaitez figer un état cohérent de vos données. Si vous lisez les données de completely_different_table_2
à l'intérieur de votre LOCK
, vos données écrites dans table_1
dépendra en quelque sorte de cette autre table. Par conséquent, vous ne voulez pas que quelqu'un modifie cette table pendant votre LOCK
et demander un READ LOCK
pour cette deuxième table également. Si vos données sont écrites dans table_1
ne dépend pas de l'autre table, il suffit de ne pas l'interroger avant le LOCK
est libéré.