Mysql: trouver les contraintes

Fermé
laura - 2 mai 2008 à 11:06
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 - 2 mai 2008 à 11:48
Bonjour,
Je suis en train de construire une interface d'administration d'une base de données et j'aimerais pouvoir supprimer des enregistrements. Seulement, pour certaines tables, des champs constituent la foreign key d'un autre enregistrement. Je travail dans le cadre général, je ne sais donc pas sur quelle table je me trouve.

exemple:
table CLIENT (id_client,...)
table COMMANDE (foreign key=id_client)

Comment faire pour supprimer l'enregistrement de la table commande pour pouvoir ensuite supprimer le client?
Peut-être existe-t-il une requête pour d'abord trouver les contraintes?

merci de votre aide.

2 réponses

Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
2 mai 2008 à 11:11
Bonjour,

Tu souhaites pouvoir supprimer un client ou une commande.
Pour la commande il n'y a pas de problem tu pourra les supprimer comme cela. pour le client il te faudre supprimer tout d'abord toutes les commandes ou il y a l'id client associé.

delete commande from table commande where idclient= idduclient a supprimer.
puis apres tu supprime le client.



0
excuse-moi ce n'est pas tout à fait ça mon problème.

En fait je suis dans le cas général, c'est-à-dire que je ne sais pas si je travail sur ma table client dans mon code. J'ai simplement la variable $table.

Donc il faudrait que je fasse un truc du genre:
if ($table interdépendante avec autre table)
alors delete enregistrement de autre table.

tu crois que c'est possible?
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
2 mai 2008 à 11:48
J'imagine alrs que pour un cas comme cela il faudrait que toutes les tables et au moins la meme architecture de base..
genre colonne 1 la primary key
colonne 2 la foreign key (qui sera a null si il n'y en pas )
colonne 3 autre foreign key si necessaire .... puis a la suite les reste des details.
donc apres tu recupere ta table tju regarde si la colonne 2 est null ou pas si elle estb pas null il faut que tu retrouve la table associé pour supprimer les enregstrement..
la pour aller plus vite tu peux etablir une sote de code pour les FK
genre si la FK commence par 3 c'est la table 3 par 4 la table 4 etc etc..
enfin c'est comme cela que je verrai la chose...je n'ai pas de solution existante qui pourrait faire l'affaire.

Cdt
0