Voici une liste des problèmes connus avec les tables de type
MERGE :
Si vous utilisez la commande ALTER TABLE
pour modifier une table de type MERGE en
un autre type de table, la liste des tables sous-jacentes
sera perdue. Au lieu de cela, les lignes des tables seront
copiées dans la nouvelle table, puis on lui assignera le
nouveau type.
Avant MySQL 4.1.1, toutes les tables sous-jacentes et la
table MERGE devaient être dans la même
base de données.
REPLACE ne fonctionne pas.
Vous ne pouvez pas utiliser DROP TABLE,
ALTER TABLE, DELETE
FROM dans clause WHERE,
REPAIR TABLE, TRUNCATE
TABLE, OPTIMIZE TABLE, ou
ANALYZE TABLE sur l'une des tables qui
est dans une table MERGE ``ouverte''. Si
vous faîtes cela, la table MERGE va
utiliser la table originale, et vous obtiendrez des
résultats étranges. Le plus simple est d'utiliser la
commande FLUSH TABLES pour s'assurer
qu'aucune table MERGE ne reste
``ouverte.''
Une table MERGE peut pas pas supporter de
contrainte de type UNIQUE sur toute la
table. Lorsque vous faites une insertion, les données vont
dans la première ou la dernière table (suivant la méthode
d'insertion INSERT_METHOD=xxx) et cette
table MyISAM s'assure que les données
sont uniques, mais rien n'est fait pour vérifier l'unicité
auprès des autres tables MyISAM tables.
Avant MySQL 3.23.49, DELETE FROM
merge_table utilisé sans clause
WHERE va uniquement détruire la table
assemblée, mais ne va pas toucher les tables sous-jacentes.
En fait, le fichier .MRG est effacé,
mais pas les tables.
RENAME TABLE utilisé sur une table de
type MERGE peut corrompre la table. Cela
sera corrigé en MySQL 4.1.x.
La création d'une table de type MERGE ne
vérifie pas si les tables sous-jacentes sont compatibles.
Si vous utilisez une table MERGE de cette
fa¸on, vous devriez rencontrer des problèmes très
étranges.
L'ordre des index dans la table MERGE et
ses tables sous-jacentes doit être le même. Si vous
utilisez la commande ALTER TABLE pour
ajouter un index de type UNIQUE à une
table qui est utilisée dans une table assemblée
MERGE, puis que vous utilisez
ALTER TABLE pour ajouter un index normal
dans la table MERGE, l'ordre des clé
sera différent suivant les tables, si jamais il y avait une
vieille clé non unique. Ceci est dû au fait que
ALTER TABLE place les clés
UNIQUE avant les clés normales, pour
être capable de détecter les doublons le plus tôt
possible.
DROP TABLE sur une table qui est utilisé
par une table MERGE ne fonctionne pas
sous Windows car le gestionnaire de MERGE
garde les connexions vers les tables cachées sous la couche
MySQL. Comme Windows ne vous permet pas d'effacer une table
qui est ouverte, vous devez d'abord fermer toute les tables
MERGE (avec la commande FLUSH
TABLES) ou effacer la table
MERGE avant de pouvoir effacer la table
désirée. Nous allons corriger lorsque nous introduirons
les vues. VIEWs.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
