Maison >base de données >tutoriel mysql >Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

王林
王林avant
2023-05-27 17:19:133073parcourir

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 :

Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

Définir les clés étrangères :

Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

(2) Dans la librairie de la base de données, j'ai créé une nouvelle table b comme suit :

Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

(3) Insérez les enregistrements dans les tables a et b comme suit :

Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

Que sont CASCADE, NO ACTION, RESTRICT et SET NULL dans les paramètres de clé étrangère Mysql ?

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer