15.2 Tables assemblées MERGE
15 Types de tables MySQL
Manuel de Référence MySQL 4.1 : Version Française
->Problèmes avec les tables MERGE
|
15.2.1 Problèmes avec les tables MERGE
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.
|