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>
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!