Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelqu'un peut-il expliquer les clés étrangères MySQL

Ce n'est pas automatique, il faut ajouter un contrainte de clé étrangère sur le customer_id colonne de la order table. Cela peut être fait au moment de la création de la table ou à l'aide d'une instruction ALTER. Consultez la documentation pour les détails. Comme d'autres l'ont souligné, notez que les deux tables doivent être des tables InnoDB (les contraintes de clé étrangère ne sont pas prises en charge par le moteur de stockage MyISAM qui les ignorera).

Avec ou sans contrainte FK, la requête ressemblerait à :

SELECT * 
FROM CUSTOMER C, ORDER O
WHERE C.ID = O.CUSTOMER_ID
AND O.ID = ...

Une contrainte FK garantirait "juste" que la colonne CUSTOMER_ID de la table ORDER ne peut pas contenir de valeurs qui n'existent pas dans la table CUSTOMER (sauf potentiellement NULL) et ainsi renforcer l'intégrité référentielle.