Lorsque la ligne est supprimée de la table parent, si les données de la ligne sont utilisées dans la table enfant, MySQL générera une erreur en raison de l'échec de la contrainte FOREIGN KEY. Cela peut être compris à l'aide des exemples des deux tableaux « client » et « commandes ». Ici, « client » est la table parent et « commandes » est la table enfant. Nous ne pouvons pas supprimer les lignes de la table « client » qui sont utilisées dans la sous-table « commandes ». Cela peut être démontré en supprimant les valeurs de la table parent comme indiqué ci-dessous -
mysql> Select * from Customer; +----+--------+ | id | name | +----+--------+ | 1 | Gaurav | | 2 | Raman | | 3 | Harshit| | 4 | Aarav | +----+--------+ 4 rows in set (0.00 sec) mysql> Select * from orders; +----------+----------+------+ | order_id | product | id | +----------+----------+------+ | 100 | Notebook | 1 | | 110 | Pen | 1 | | 120 | Book | 2 | | 130 | Charts | 2 | +----------+----------+------+ 4 rows in set (0.00 sec)
Maintenant, supposons que nous essayions de supprimer les lignes avec id = 1 ou id = 2 de la table parent "customer" (puisque ces deux sont utilisés dans la ligne de la table enfant), MySQL générera l'erreur suivante car la contrainte de clé étrangère a échoué.
mysql> Delete from customer where id = 1; ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`)REFERENCES `customer` (`id`)) mysql> Delete from customer where id = 2; ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`)REFERENCES `customer` (`id`))
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!