Maison >base de données >tutoriel mysql >Comment ON DELETE CASCADE de MySQL gère-t-il les relations de clés étrangères et empêche-t-il les enregistrements orphelins ?
Suppressions en cascade avec contraintes de clés étrangères MySQL
Garantir l'intégrité des données et empêcher les enregistrements orphelins sont cruciaux dans la gestion des bases de données relationnelles. Pour atteindre ces objectifs, MySQL propose de puissantes contraintes de clé étrangère avec des suppressions en cascade.
Création de contraintes de clé étrangère avec DELETE ON CASCADE
Pour établir une relation de clé étrangère avec des suppressions en cascade , utilisez la syntaxe suivante :
FOREIGN KEY (foreign_column) REFERENCES table (primary_key) ON DELETE CASCADE ON UPDATE CASCADE
Dans votre exemple, vous avez ce qui suit tables :
CREATE TABLE categories ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) ) ENGINE=InnoDB; CREATE TABLE products ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) ) ENGINE=InnoDB; CREATE TABLE categories_products ( category_id INT NOT NULL, product_id INT NOT NULL, PRIMARY KEY (category_id, product_id), FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB;
Comprendre les suppressions en cascade
Lorsque vous supprimez un enregistrement de la table des catégories, le système supprimera automatiquement tous les enregistrements associés dans la table catégories_produits où le category_id correspond à la catégorie supprimée. Cependant, la suppression ne se répercutera pas davantage sur la table des produits car aucune relation de clé étrangère n'y est définie.
Par exemple, si vous supprimez la catégorie « bleue », les enregistrements suivants dans catégories_produits seront supprimés :
(blue, mittens) (blue, boots)
Mais les produits 'bottes' et 'mitaines' resteront intacts dans le tableau des produits.
Prévenir Perte de données involontaire
Pour éviter une perte potentielle de données, il est essentiel d'examiner attentivement l'impact des suppressions en cascade avant de les mettre en œuvre. Par exemple, dans le scénario que vous avez décrit, si vous supprimez une catégorie qui est également associée à d'autres produits, ces produits seront également supprimés.
Par conséquent, il est important d'évaluer minutieusement les conséquences potentielles et de définir clairement les relations. entre vos tables pour garantir que les suppressions en cascade ne compromettent pas l'intégrité de vos données.
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!