pT-benj Posté 5 Avril 2007 Posté 5 Avril 2007 Bonjour à tous, voila j'ai un petit problème dans une requête avec MySQL, Donc pour faire simple, je travaille ici sur 2 tables, une table CATEGORIE et une table PRODUIT. Le MRD : CATEGORIE(id_cat, nom_cat) PRODUIT(id_produit, nom_produit, #id_cat) Il devrait donc y avoir une contrainte d'intégrité référentielle. Le problème est que quand, avec une requête SQL, je supprime une catégorie, cela la supprime même si elle se trouve dans un produit. Exemple : Categorie ID|Nom 5 |Périphérique Produit ID|Nom |ID_CAT 2 |Clé USB |5 Normalement je ne peux pas supprimer la catégorie "Périphérique" car elle est en lé étrangère dans produits...Pourtant avec MySQL, elle est effacée quand même. Y a t'il un pas un moyen pour afficher un message en disant que la suppression est impossible? J'espère avoir été assez clair. En vous remerciant par avance de vos réponses, je vous souhaite une bonne journée.
f_trt Posté 5 Avril 2007 Posté 5 Avril 2007 Sauf erreur de ma part tu ne peux le faire avec mysql de base (MYISAM), il te faut dans ce cas par exemple MYSQL + INNODB et là c'est ok.
Kent Posté 5 Avril 2007 Posté 5 Avril 2007 (modifié) En effet en admettant que la contrainte de clef étrangère soit bien faite, il faut que tes tables soit en innoDB A bientôt Modifié 5 Avril 2007 par Kent
pT-benj Posté 5 Avril 2007 Auteur Posté 5 Avril 2007 D'accord, je ne conniassais pas innoDB Je vais donc me renseigner pour comprendre ce que c'est et comment l'applquer à ma BD. Merci beaucoup
lionel.a Posté 12 Avril 2007 Posté 12 Avril 2007 Bonjour, ou alors, ce que je fais, c'est que je liste avec PHP toutes les liens et je les supprime Ca se fait assez vite avec une fonction qui liste les liens, qui s'appelle elle-même pour les sous-liens, et qui supprime les enregistrements.
petit-ourson Posté 12 Avril 2007 Posté 12 Avril 2007 On peut aussi utiliser les triggers pour "simuler" l'intégrité référentielle.
destroyedlolo Posté 12 Avril 2007 Posté 12 Avril 2007 (modifié) Autre solution si tu as le choix de la database : PostgreSQL (pour rester dans l'OpenSource) gere ca de base depuis des annees. Modifié 12 Avril 2007 par destroyedlolo
petit-ourson Posté 12 Avril 2007 Posté 12 Avril 2007 On ne peut pas vraiment dire que MySQL ne le gère pas de base maintenant.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant