[Mysql] : comment merger deux tables en une ?

Print Friendly, PDF & Email

Merger des tables sur mysql c’est possible. En effet, vous pouvez faire des associations de table assez facilement. Personnellement je ne suis pas un fan de cette solution nous allons voir pourquoi un peu plus loin. Commençons par créer deux tables similaires au niveau de la structure :

mysql> create table tab3 (f1 varchar(255)) ENGINE=MyISAM;
Query OK, 0 rows affected (0,08 sec)

mysql> create table tab4 (f2 varchar(255)) ENGINE=MyISAM;
Query OK, 0 rows affected (0,08 sec)

Puis insérons des données dans ces tables :

mysql> insert into tab4 values ('table 2');
Query OK, 1 row affected (0,00 sec)

mysql> insert into tab4 values ('table 2');
Query OK, 1 row affected (0,00 sec)

Maintenant créons la table de merge :

mysql> create table fusion (f1 varchar(255)) ENGINE=MERGE UNION=(tab3,tab4) INSERT_METHOD=LAST;
Query OK, 0 rows affected (0,07 sec)

Et voici maintenant son contenu :

mysql> select * from fusion;
+---------+
| f1 |
+---------+
| table 1 |
| table 1 |
| table 2 |
| table 2 |
+---------+
4 rows in set (0,01 sec)

Mais supprimons une des tables composant la table de merge et procédons à un nouveau SELECT :

mysql> drop table tab3;
Query OK, 0 rows affected (0,00 sec)

mysql> select * from fusion;
ERROR 1168 (HY000): Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist

Et voilà mysql nous jette car nous venons de casser un des éléments constitutif de la table de merge. Pas terrible. Vous comprenez donc pourquoi il vaut mieux éviter de créer des tables de merge.

Et vous utilisez vous des tables de ce type ? avez vous rencontré des problèmes avec ?

mysql_table_merge

Découvrez  [Python] : comment requêter une base mysql avec mysql.connector ?