Tienes que bloquear todas las mesas , que desea utilizar hasta el LOCK
en lanzamiento. Puedes dar completely_different_table_2
solo un READ LOCK
, que permite que otros procesos lean esta tabla mientras está bloqueada:
LOCK TABLES table_1 WRITE, completely_different_table_2 READ;
PD:MySQL tiene una razón para hacerlo. Si solicita un LOCK
, desea congelar un estado consistente de sus datos. Si lee datos de completely_different_table_2
dentro de tu LOCK
, sus datos escritos en table_1
dependerá de alguna manera de esta otra tabla. Por lo tanto, no desea que nadie cambie esta tabla durante su LOCK
y solicita un READ LOCK
para esta segunda mesa también. Si sus datos se escriben en table_1
no depende de la otra tabla, simplemente no la consulte hasta que LOCK
se libera.