Trato de entender por qué hay un error en el siguiente caso que indica que una tabla "no estaba bloqueada" a pesar de que se emitió un (WRITE) LOCK justo antes.
Esta es la configuración (MySQL / MariaDB):
CREATE TABLE A ( id INT ); CREATE TABLE B ( id INT );Estos son los casos (el primero es el que falla):
# does not work --> Error: "Table 'B' was not locked with LOCK TABLES" on 2nd statement LOCK TABLES A WRITE, B WRITE; INSERT INTO A (id) VALUES ((SELECT 1 FROM B)), ((SELECT 2 FROM B)); UNLOCK TABLES; # works (single statements) LOCK TABLES A WRITE, B WRITE; INSERT INTO A (id) VALUES ((SELECT 1 FROM B)); INSERT INTO A (id) VALUES ((SELECT 2 FROM B)); UNLOCK TABLES; # works (table aliases) LOCK TABLES A WRITE, B tb1 WRITE, B tb2 WRITE; INSERT INTO A (id) VALUES ((SELECT 1 FROM B tb1)), ((SELECT 2 FROM B tb2)); UNLOCK TABLES;¿Qué causa el error en el primer caso?
Editar: simplifiqué el ejemplo nuevamente al mínimo.