Version complète: sur le forum Webmaster Hub : Pas de contrainte d'intégrité référentielle?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
pT-benj
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. blush.gif

En vous remerciant par avance de vos réponses, je vous souhaite une bonne journée.
f_trt
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
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
pT-benj
D'accord, je ne conniassais pas innoDB unsure.gif

Je vais donc me renseigner pour comprendre ce que c'est et comment l'applquer à ma BD.

Merci beaucoup smartass.gif
lionel.a
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
On peut aussi utiliser les triggers pour "simuler" l'intégrité référentielle.
destroyedlolo
Autre solution si tu as le choix de la database : PostgreSQL (pour rester dans l'OpenSource) gere ca de base depuis des annees.
petit-ourson
On ne peut pas vraiment dire que MySQL ne le gère pas de base maintenant.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.