Maison > base de données > tutoriel mysql > ON DELETE CASCADE de MySQL peut-il supprimer automatiquement les enregistrements de composants tout en préservant l'enregistrement de type ?

ON DELETE CASCADE de MySQL peut-il supprimer automatiquement les enregistrements de composants tout en préservant l'enregistrement de type ?

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

Can MySQL's ON DELETE CASCADE Automatically Delete Component Records While Preserving the Type Record?

ON DELETE CASCADE de MySQL : suppression de composants tout en préservant les enregistrements de type

MySQL ON DELETE CASCADE propose la suppression automatique des enregistrements dépendants lorsqu'un enregistrement associé est supprimé. Cependant, son application nécessite un examen attentif des relations entre les tables.

Considérons une base de données structurant des composants, chacun lié à un type spécifique. Le but : supprimer tous les composants associés à un type sans supprimer le type lui-même. Est-ce réalisable ?

L'Approche

Pour y parvenir, il faut utiliser stratégiquement ON DELETE CASCADE au sein d'une structure de table bien définie. La solution est la suivante :

<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
  1. Création d'une table de composants : Cette table contient les détails des composants et leurs typeId correspondants.

  2. Implémentation de clé étrangère : Une contrainte de clé étrangère (myForeignKey) connecte la colonne components de la table typeId à la colonne types de la table id.

  3. ON DELETE CASCADE Spécification : L'élément crucial : ON DELETE CASCADE. Lorsqu'un enregistrement de la table types est supprimé (en supposant que les deux tables utilisent le moteur de stockage InnoDB), tous les enregistrements associés dans la table components partageant cette typeId sont automatiquement supprimés.

Considération clé :

InnoDB est indispensable. MyISAM, manquant de support de clé étrangère, rend cette approche inefficace.

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