Réponse D. est correct, si et seulement si le moteur de stockage prend en charge et applique réellement les contraintes de clé étrangère.
Si les tables sont créées avec Engine=MyISAM , alors ni b. ou d. est correct.
Si les tables sont créées avec Engine=InnoDB , puis d. est correct.
REMARQUE :
Ceci est vrai pour InnoDB si et seulement si FOREIGN_KEY_CHECKS = 1; si FOREIGN_KEY_CHECKS = 0 , puis un DELETE de la table parent (foo) ne sera pas supprimer les lignes de la table enfant (foo2) qui font référence à une ligne supprimée de la table parent.
Vérifiez cela avec la sortie de SHOW VARIABLES LIKE 'foreign_key_checks' (1=ON, 0=OFF)(La valeur par défaut normale est que ceci soit activé.)
La sortie de SHOW CREATE TABLE foo montrera quel moteur la table utilise.
La sortie de SHOW VARIABLES LIKE 'storage_engine' affichera le moteur par défaut utilisé lorsqu'une table est créée et que le moteur n'est pas spécifié.