Remarque : les clés externes en SQL ne sont pas utilisées pour effectuer des regroupements de table, mais pour assurer l'intégrité référentielle. Si vous voulez lire des informations depuis plusieurs tables avec une commande SELECT
, c'est un regroupement !
SELECT * from table1,table2 where table1.id = table2.id;
JOIN
. 8.3.5 Utiliser des clés étrangères
La syntaxe FOREIGN KEY
de MySQL n'existe que pour la compatibilité avec les commandes CREATE TABLE
des autres bases SQL : elle n'a aucun effet. La syntaxe FOREIGN KEY
sans la partie ON DELETE ...
n'est utilisée que pour des raisons de documentation. Certaines applications ODBC l'utilise pour générer des clauses WHERE
automatiques, mais il est généralement simple à remplacer. FOREIGN KEY
est parfois utilisé comme contrainte, mais ce genre de vérification n'est pas nécessaire si les lignes ont été insérées dans l'ordre. MySQL ne supporte que ces clauses, car certaines applications en ont besoin (qu'elle fonctionne ou pas).
Avec MySQL, vous pouvez contourner le problème sans la clause ON DELETE ...
en ajoutant une commande DELETE
adéquate lors de l'effacement d'un enregsitrement d'une table qui a une clé externe. En pratique, c'est aussi rapide (voire plus), et beaucoup plus portable que les clés externes.
Dans un futur proche, nous allons implémenter FOREIGN KEY
de manière à sauver les informations dans la table de spécification, pour qu'elles soient accessibles par mysqldump
et ODBC.