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. VIEW
s.
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.