Faire mes premiers essais avec des clés étrangères dans une base de données mySQL et tentent de faire un insert, qui échoue pour cette raison: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
Travailler avec les clés étrangères - ne peut pas insérer
Est-ce que cela signifie que les clés étrangères limitent INSERTS ainsi comme DELETS et/ou MISES A JOUR sur chaque table qui est appliquée avec des relations de clés étrangères?
Merci!
Description Mise à jour:
Products
----------------------------
id | type
----------------------------
0 | 0
1 | 3
ProductsToCategories
----------------------------
productid | categoryid
----------------------------
0 | 0
1 | 1
table de produit a la structure suivante
CREATE TABLE IF NOT EXISTS `alpha`.`products` (
`id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`type` TINYINT(2) UNSIGNED NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`) ,
CONSTRAINT `funkyfunky`
FOREIGN KEY (`id`)
REFERENCES `alpha`.`ProductsToCategories` (`productid`)
ON DELETE CASCADE,
ON UPDATE CASCADE)
ENGINE = InnoDB;
Salut Einar, Merci pour votre réponse. Va certainement tester cela, des sons en effet comme ça pourrait être une solution! – Industrial
Une autre pensée que je souhaite avoir une contribution sur. Lorsque la table des produits utilise une clé étrangère, un produit supprimé supprime également la connexion aux catégories créées dans la table "products_to_categories". N'est-ce pas la meilleure façon d'utiliser foreign_keys? Je veux dire, si j'ai supprimé la ligne dans products_to_categories, je ne voudrais pas que le produit soit supprimé? – Industrial
Il s'agit essentiellement d'une suppression en cascade. Lorsqu'un produit est supprimé, les entrées correspondantes dans "products_to_categories" seront supprimées. La clé étrangère doit être déclarée bien sûr dans "products_to_categories" avec une suppression en cascade. Vous avez déjà ajouté la suppression CASCADE. Il suffit de déplacer la clé étrangère vers les "products_to_categories". –