|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Bonjour,
Alors voila, j'aimerais supprimer un doublon dans une base de données. Mais avant, il faut fusionner les 2 entrées pour ne pas perdre d'information. En effectuant cette commande : delete from collab where id_collab=2444; j'ai ce message d'erreur Citation:
On m'a dit que normalement si la fusion a bien été effectuée alors la suppression n'est pas un problème. Est-ce vrai ? |
|
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
Etes-vous bien sûr que ce soit cette ligne là que vous voulez supprimer ? Pour schématiser votre problème actuel : collab ------------------ ID ..... 2444 affaire_forecast_collab ------------------------ ID id_collab X 2444 Là vous avez une clef étrangère sur la colonne id_collab de affaire_forecast_collab qui référence la colonne ID de colab. Du coup le SGBD vous interdit de supprimer cette ligne de collab. Vous devez tout d'abord supprimer la (les) ligne(s) de affaire_forecast_collab qui ont id_collab = 2444. Lisez ceci : http://sqlpro.developpez.com/cours/s.../?page=partie2 Les chapitres 7.1 & 7.2 en particulier. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
D'accord j'ai compris.
Il y a t'il une requete qui permet de lister toutes les tables qui posséde une clé étrangère en lien avec la clé primaire id_collab ? |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Surement mais pour celà il faudrait connaitre votre SGBD.
Et ça sera un peu plus compliqué que ça sachant que votre table affaire_forecast_collab peut, elle aussi, être référencée ailleurs, et ainsi de suite |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Je crois que je vais le faire manuellement ça ira beaucoup plus vite finalement. Parce que je ne suis pas sûr qu'il y a tant d'informations que ça à récupérer.
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Étudiant Inscription : avril 2008 Messages : 275 ![]() |
Ou tu mets "temporairement" (ou pas) le mode "CASCADE ON DELETE" sur la clef primaire pointée par la clef étrangère et tu fais ça rapidement (à tes risques et périls / ! \)
@+ |
|
|
00
|
|
|
#7 |
![]() ![]() |
Si je traduis bien la requête et le message d'erreur reçu, tu souhaites supprimer un collaborateur et le SGBD t'en empêche parce que ce collaborateur a créé au moins une affaire. N'a t-il pas raison de t'empêcher de supprimer une affaire ? Laquelle a peut-être généré des commandes, des factures, des achats, des livraisons, des pointages d'heures de main d'oeuvre...
Bref, réfléchis bien avant de vouloir à tout prix supprimer la ligne relative à ce collaborateur ! Il vaudrait peut-être mieux le laisser et se contenter de renseigner, si elle existe, sa date de départ de l'entreprise ou, si tu ne peux pas toucher aux tables existantes, créer une table pour les collaborateurs disparus qui sera en association avec la table des collaborateurs puis une vue pour ne fournir aux programmes que les collaborateurs encore présent. Erreur de conception au départ ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
Copyright © 2000-2012 - www.developpez.com