При работе с таблицами MERGE
могут возникать следующие проблемы:
Для таблицы
MERGE
не могут поддерживаться ограниченияUNIQUE
по всей таблице. При выполнении командыINSERT
данные помещаются в первую или последнюю таблицу (в соответствии сINSERT_METHOD=xxx
) и для этой таблицыMyISAM
обеспечивается однозначность данных, но ей ничего не известно об остальных таблицахMyISAM
.Команда
DELETE FROM merge_table
без оператораWHERE
очищает только распределение для таблицы, ничего не удаляя из преобразованных таблиц.Использование команды
RENAME TABLE
над активной таблицейMERGE
может привести к повреждению таблицы. Эта ошибка будет исправлена в MySQL 4.0.x.При создании таблицы типа
MERGE
не проверяется совместимость типов базовых таблиц. Создав таблицуMERGE
на основе несовместимых типов, вы можете столкнуться с непредсказуемыми проблемами.Если для первого добавления индекса
UNIQUE
в таблицу, преобразованную вMERGE
, используется командаALTER TABLE
, а затем командойALTER TABLE
в таблицуMERGE
добавляется нормальный индекс, порядок ключей для таблиц будет разным, если в таблице был старый не однозначный ключ. Это происходит потому, что командаALTER TABLE
помещает ключиUNIQUE
перед нормальными ключами, чтобы как можно раньше обнаружить дублирующиеся ключи.Оптимизатор диапазона пока не может эффективно использовать таблицу
MERGE
, в связи с чем иногда возникают неоптимальные соединения. Это будет исправлено в MySQL 4.0.x.
Команда DROP TABLE
над таблицей, преобразованной в таблицу MERGE
, не будет
работать под Windows, так как обработчик MERGE
скрывает распределение
таблиц от верхнего уровня MySQL. Поскольку в Windows не разрешается
удалять открытые файлы, сначала необходимо сбросить на диск все таблицы
MERGE
(при помощи команды FLUSH TABLES
) или удалить таблицу MERGE
перед
тем, как удалить таблицу. Эту ошибку мы планируем исправить одновременно с
введением VIEW
.