IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Erreur lors de la suppression de clé étrangère


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Points : 64
    Points
    64
    Par défaut Erreur lors de la suppression de clé étrangère
    Bonjour ,
    dans le cadre d' un script de copie de table d' une base à une uatre , je souhaiterais pouvoir drop une table afin de la recreer avec les nouveaux elements issus de la meme table mais d une autre base.
    Pour ce faire et apres avoir suivi les aides Microsoft, j' utilise a commande ci dessous afin de désactiver les contraintes sur ma table et la droper derrière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    USE MDE_DOS_DEMO_GH;
    GO
    ALTER TABLE MDE_DOS_DEMO_GH.dbo.PMEELEMENT NOCHECK CONSTRAINT ALL
    GO
     
    DROP TABLE MDE_DOS_DEMO_GH.dbo.PMEELEMENT;
    Souci lors du drop apparemment les contraintes existes toujours car j ai ce message d ' erreur a l execution de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg*3726, Niveau*16, État*1, Ligne*3
    Impossible de supprimer l'objet 'MDE_DOS_DEMO_GH.dbo.PMEELEMENT' car il est référencé par une contrainte FOREIGN KEY.
    Auriez vous une idée de l' erreur que je commet ?

    Merci d avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu essaies de supprimer une table parent avec une ou des tables enfants qui ont un contrainte de clé étrangère dessus.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Points : 64
    Points
    64
    Par défaut
    Merci pour ta réponse,
    y a t il possibilité de supprimer toutes les contraintes de ma base ?
    Cela resoudrait le problème ?

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par wwilly17 Voir le message
    y a t il possibilité de supprimer toutes les contraintes de ma base ?
    Ça serait quand même un peu violent, autant soigner un rhume à coups de revolver...

    Avant de tenter de supprimer la table MDE_DOS_DEMO_GH.dbo.PMEELEMENT, il faut savoir quelles tables dépendantes ont légitimité à rouspéter et empêcher cela.

    Par exemple, pour ma propre base CJD, je cherche à supprimer la table P (à laquelle fait référence la table SP) ; je demande d’abord à SQL Server de me dire quelles tables feront obstacle à cette opération. Pour cela, je passe par View dependencies :



    =>


    Vu l’image ci-dessus, la table SP dit en substance « J’existe ! Je suis viscéralement dépendante de P ! Je m’oppose donc à sa destruction ! »

    Autrement dit, avant de supprimer P, il faut supprimer le rattachement de SP à P :




    Ou en SQL :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    USE [CJD]
    GO
    ALTER TABLE [dbo].[SP] DROP CONSTRAINT [SP_FK_1]
    GO

    Mais l’histoire ne s’arrête pas forcément là... Il se peut que des tables dépendent à leur tour de la table SP : elles aussi rouspéteront tant que leur rattachement sera effectif et on repartira pour de nouveaux DROP CONSTRAINT, et cela jusqu’à la dernière génération....

    Quand il n’y aura plus aucune objection quel que soit niveau dépendant, alors vous pourrez supprimer votre table, mais une fois que vous aurez terminé votre tâche de recopie, rattachez pout ce que vous avez détaché (en croisant les doigts pour qu’il n’y ait pas de lignes orphelines, ce qui montrerait que votre base est devenue malade !)

    A suivre...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. Erreur lors de la suppression du fichier
    Par kynri dans le forum C
    Réponses: 5
    Dernier message: 19/01/2008, 15h03
  2. ERREUR lors de la suppression d'un projet
    Par dev09 dans le forum Maven
    Réponses: 6
    Dernier message: 20/09/2007, 13h57
  3. Erreur lors de la création de clés étrangères
    Par Neuromancien2 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/07/2007, 23h44
  4. Msg erreur lors de la suppression d'un fichier
    Par saidiweb dans le forum Windows XP
    Réponses: 3
    Dernier message: 20/05/2007, 17h02
  5. Réponses: 14
    Dernier message: 04/05/2006, 07h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo