5.3.5 Clés étrangères

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.