A continuación se describen problemas conocidos con tablas
MERGE
:
Si usa ALTER TABLE
para cambiar una tabla
MERGE
a otro tipo de tabla, el mapeo de
las tablas subyacentes se pierde. En su lugar, los registros
de las tablas subyacentes MyISAM
se
copian en la tabla alterada, que luego se asigna al nuevo
tipo.
REPLACE
no funciona.
No puede usar DROP TABLE
, ALTER
TABLE
, DELETE FROM
sin una
cláusula WHERE
, REPAIR
TABLE
, TRUNCATE TABLE
,
OPTIMIZE TABLE
, o ANALYZE
TABLE
en alguna de las tablas que se mapean en una
tabla MERGE
abierta. Si lo hace, la tabla
MERGE
puede referirse a la tabla
original, lo que conduce a resultados inesperados. La forma
más fácil de solucionar esto es realizar un comando
FLUSH TABLES
antes de realizar ninguna de
estas operaciones para segurar que no quedan abiertas tablas
MERGE
.
Una tabla MERGE
no puede mantener
restricciones UNIQUE
sobre la tabla
entera. Cuando realiza un INSERT
, los
datos van a la primera o última tabla
MyISAM
(dependiendo del valor de la
opción INSERT_METHOD
). MySQL se asegura
que los valores de clave única sean únicos dentro de la
tabla MyISAM
, pero no entre todas las
tablas en la colección.
Cuando crea una tabla MERGE
, no se
chequea que las tablas subyacentes existan y tengan una
estructura idéntica. Cuando se usa la tabla
MERGE
, MySQL chequea que la longitud del
registro para todas las tablas mapeadas sea la misma, pero
esto no es "a prueba de bombas". Si crea una tabla
MERGE
de tablas MyISAM
disimilares, es muy posible que tenga problemas extraños.
El orden de índices en la tabla MERGE
y
sus tablas subyacentes debe ser el mismo. Si usa
ALTER TABLE
para añadir un índice
UNIQUE
a una tabla usada en una tabla
MERGE
, y después usa ALTER
TABLE
para añadir un índice no único en la
tabla MERGE
, la ordenación de índice
es distinta para las tablas si ya hay un índice no único
en las tabla subyacentees. (Esto es porque ALTER
TABLE
pone los índices UNIQUE
antes de los índices no únicos para facilitar detección
rápida de claves duplicadas.) Consecuentemente, las
consultas en tablas con tales índices pueden retornar
resultados no esperados.
DROP TABLE
en una tabla en uso por una
tabla MERGE
no funciona en Windows ya que
el mapeo del motor de almacenamiento
MERGE
está escondido por la capa
superior de MySQL. Desde Windows no se permite el borrado de
ficheros abiertos, debe volcar todas las tablas
MERGE
(con FLUSH
TABLES
) o borrar la tabla MERGE
antes de borrar la tabla.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.