Maison > base de données > tutoriel mysql > Comment puis-je supprimer des enregistrements enfants dans MySQL lorsqu'un enregistrement parent est supprimé sans supprimer le parent ?

Comment puis-je supprimer des enregistrements enfants dans MySQL lorsqu'un enregistrement parent est supprimé sans supprimer le parent ?

Patricia Arquette
Libérer: 2025-01-10 12:17:42
original
424 Les gens l'ont consulté

How to Delete Child Records in MySQL When a Parent Record is Deleted (Without Deleting the Parent)

Exploiter ON DELETE CASCADE de MySQL pour la suppression des données dépendantes

Le maintien de l'intégrité des données nécessite souvent la suppression automatique des données associées lors de la suppression d'un enregistrement parent. La contrainte ON DELETE CASCADE de MySQL fournit cette fonctionnalité. Un malentendu courant est que cette contrainte supprime également l'enregistrement parent lorsqu'un enregistrement enfant est supprimé ; c'est incorrect.

Pour obtenir le comportement souhaité (suppression des enregistrements enfants (composant) lorsqu'un enregistrement parent (type) est supprimé sans affecter le parent), vous devez définir la relation de clé étrangère dans la table enfant à l'aide de ON DELETE CASCADE. Ce qui suit illustre cela pour un components tableau :

<code class="language-sql">CREATE TABLE `components` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `typeId` int(10) unsigned NOT NULL,
    `moreInfo` VARCHAR(32),
    -- etc
    PRIMARY KEY (`id`),
    KEY `type` (`typeId`),
    CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
      REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);</code>
Copier après la connexion

Cette configuration garantit que la suppression d'un enregistrement de la table types supprime automatiquement toutes les entrées correspondantes dans la table components, laissant les enregistrements de la table types intacts.

Considérations importantes :

Rappelez-vous que les contraintes de clés étrangères nécessitent l'utilisation du moteur de stockage InnoDB. MyISAM, le moteur par défaut des anciennes versions de MySQL, ne prend pas en charge les clés étrangères. Par conséquent, assurez-vous que vos tables utilisent InnoDB pour que cette fonctionnalité fonctionne correctement.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal