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