MySQL est le moteur DB. Il peut utiliser plusieurs moteurs de stockage. MyISAM est le moteur de stockage par défaut pour MySQL et ne supporte pas les clés étrangères. InnoDB est un autre moteur de stockage qui prend en charge les clés étrangères. Vous devez spécifier ENGINE = InnoDB car MySQL utilisera MyISAM par défaut. ON DELETE CASCADE supprimera toutes les lignes d'une table contenant une clé étrangère qui fait référence à une clé supprimée. Je pense que c'est dangereux et défait beaucoup de l'objectif de la restriction de la clé étrangère, alors j'éviterais de l'utiliser, mais ce n'est que mon opinion personnelle.
Supposons que vous avez:
+-------+-------+
| ordID | proID |
+-------+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
+-------+-------+
Et OrdersItems il a FOREIGN KEY (proID
) Références Produits (proID
) sur CASCADE SUPPR.
Alors si quelqu'un court
DELETE FROM Products WHERE proID = 2
Puis lignes avec ordID 4 et 5 seront également supprimés (il cascades).
alors est-ce que j'utilise la cascade ou pas? Qu'en est-il de la mise à jour –
Je n'utiliserais ni. Si vous voulez les utiliser est totalement à vous cependant. Je vous suggère de les lire entièrement dans l'API MySQL avant de prendre votre décision: http://dev.mysql.com/doc/refman/5.1/fr/innodb-foreign-key-constraints.html –