Lorsque j'ai utilisé Navicat pour MySQL pour concevoir la table aujourd'hui, lors de la définition de la clé étrangère, il y avait quatre valeurs parmi lesquelles choisir dans les deux colonnes lors de la suppression et de la mise à jour : CASCADE, NO ACTION, RESTRICT et SET NULL. Je les ai tous essayés moi-même, leurs différences sont les suivantes :
CASCADE : lorsque la table parent est supprimée et mise à jour, la table enfant supprime et met à jour les enregistrements associés ;
SET NULL : lorsque la table parent est supprimée ; et se met à jour, la table enfant supprimera et mettra à jour les enregistrements associés. La colonne du champ de clé étrangère de l'enregistrement est définie sur null, notez donc que la clé étrangère ne peut pas être définie sur non nulle lors de la conception de la table enfant
Quand il y en a ; sont des enregistrements associés à la table parent dans la table enfant, RESTRICT (restriction) empêchera la suppression des enregistrements de la table parent
AUCUNE ACTION : Identique à RESTRICT, mais vérifiez également d'abord les clés étrangères
Vide, RESTRICT ; , AUCUNE ACTION | Supprimer : la table principale ne peut être supprimée que lorsque les enregistrements de la table esclave n'existent pas, supprimez la table esclave et la table maître reste inchangée. Mise à jour : lorsque l'enregistrement de la table esclave n'existe pas, le menu de la table principale peut être mis à jour. Lorsque la table esclave est mise à jour, la table principale reste inchangée. |
CASCADE | Supprimer : Supprime automatiquement la table esclave lors de la suppression de la table maître. Supprimez la table esclave, en laissant la table maître inchangée. Mise à jour : mettez à jour automatiquement la table esclave lors de la mise à jour de la table maître. Mettez à jour la table esclave, en laissant la table maître inchangée. |
SET NULL | Supprimer : lors de la suppression de la table maître, mettez automatiquement à jour la table esclave à NULL, supprimez la table esclave et la table maître reste inchangée. Mise à jour : mettez automatiquement à jour la valeur de la table esclave à NULL lors de la mise à jour de la table maître. Mettez à jour la table esclave, en laissant la table maître inchangée. |
Voici un petit exemple pour aider à comprendre :
(1) Dans la librairie de la base de données, j'ai créé une nouvelle table a comme suit :
Définir les clés étrangères :
(2) Dans la librairie de la base de données, j'ai créé une nouvelle table b comme suit :
(3) Insérez les enregistrements dans les tables a et b comme suit :
Ici : le champ id2 de la table a est un étranger champ clé, faites référence à la clé primaire de la table b, donc la table b est la table parent et la table a est la table enfant ; puis lors de la définition des clés étrangères de la table a, définissez quatre valeurs différentes, vous pouvez tirer la conclusion que j'ai mentionnée. au-dessus de.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!