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

MS SQL Server Discussion :

[SQL SERVER 2000] clé étrangère composée --> problème de syntaxe


Sujet :

MS SQL Server

  1. #1
    Invité
    Invité(e)
    Par défaut [SQL SERVER 2000] clé étrangère composée --> problème de syntaxe
    Bonjour,

    C'est sûrement quelque chose de bête que je vais vous demander, mais je ne trouve pas la solution ! J'ai cherché sur le forum et le seul sujet qui en parlait n'avais pas de solution qui me convient

    En fait j'ai une table qui a pour clé primaire un identifiant + clé étrangère de la table qu'elle référencie. Et ensuite j'ai une autre table qui référence cette table, et qui par conséquent à besoin de toute cette clé primaire.

    Voilà les tables en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    CREATE TABLE devis_facture
    (
    	numFacture VARCHAR(10) NOT NULL,
    	fteTotal DECIMAL(4,2) NULL,
    	montantReelHT DECIMAL(15,2) NULL,
    	refPoralu VARCHAR(15) NULL,
    	dateFacture DATETIME NOT NULL,
    	numDevis VARCHAR(6) FOREIGN KEY REFERENCES devis_affaires(numDevis)
    );
    
    CREATE TABLE devis_repere
    (
    	idRepere INTEGER IDENTITY(1,1),
    	designation VARCHAR(255) NOT NULL,
    	qteCommandee INTEGER NOT NULL,
    	prixUnitaireHT DECIMAL(9,2) NOT NULL,
    	idGroupe INTEGER FOREIGN KEY REFERENCES devis_groupeRepere(idGroupe) NULL,
    	numDevis VARCHAR(6) FOREIGN KEY REFERENCES devis_affaires(numDevis),
    	CONSTRAINT pk_repereDevis PRIMARY KEY (idRepere,numDevis)
    );
    
    CREATE TABLE devis_detailFactureRepere
    (
    	idRepere INTEGER FOREIGN KEY REFERENCES devis_repere(idRepere),
    	numDevis VARCHAR(6) FOREIGN KEY REFERENCES devis_repere(numDevis),
    	numFacture VARCHAR(10) FOREIGN KEY REFERENCES devis_facture(numFacture),
    	qtePosee INTEGER NULL,
    	fte DECIMAL(5,2) NULL,
    	CONSTRAINT pk_detailFactureRepere PRIMARY KEY (idRepere,numDevis,numFacture)
    );
    En bleu on voit ce qui m'a permis de générer ma clé primaire, et en rouge la ligne qui pose problème (je pense que vous avez compris ce que j'essaye de faire). Il me met comme erreur : Aucune clé primaire ou prototype dans la table référencée 'devis_repere' ne correspond à la liste des colonnes de référence de la clé étrangère 'FK__devis_det__idRep__30F9DF9B'.

    Je vois d'où vient le problème, mais je vois pas comment le résoudre, et je n'ai rien trouvé qui parlait du genre de clé que je souhaite faire ... Quelqu'un peut-il m'aider SVP ?? Merci !!
    Dernière modification par Invité ; 22/09/2006 à 11h13.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je sais pas si j'ai été assez claire

    En fait, ce que je chercher c'est la syntaxe pour créer une clé primaire à partir d'un clé étrangère, sachant que cette clé étrangère est composée d'un identifiant et d'une clé étrangère sur une autre table.

    C'est toujours aussi peu claire je crois

  3. #3
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    C'est assez clair, merci d'ailleurs pour l'effort

    Essaie qqch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE devis_detailFactureRepere
    (
    	idRepere INTEGER NOT NULL,
    	numDevis VARCHAR(6) NOT NULL,
    	numFacture VARCHAR(10) FOREIGN KEY REFERENCES devis_facture(numFacture),
    	qtePosee INTEGER NULL,
    	fte DECIMAL(5,2) NULL,
    	CONSTRAINT pk_detailFactureRepere PRIMARY KEY (idRepere,numDevis,numFacture),
    	CONSTRAINT fk$detailFactureRepere$reference$devis_repere FOREIGN KEY (idRepere,numDevis) REFERENCES devis_repere (idRepere,numDevis)
    );
    Non testé.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse. L'erreur s'est "déplacé, je comprend pas pourquoi ça ne marche pas Ou alors je suis très fatiguée !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE devis_detailFactureRepere
    (
    	idRepere INTEGER NOT NULL,
    	numDevis VARCHAR(6) NOT NULL,
    	numFacture VARCHAR(10) FOREIGN KEY REFERENCES devis_facture(numFacture),
    	qtePosee INTEGER NULL,
    	fte DECIMAL(5,2) NULL,
    	CONSTRAINT pk_detailFactureRepere PRIMARY KEY (idRepere,numDevis,numFacture),
    	CONSTRAINT fk_detailFactureRepere_devisRepere FOREIGN KEY (idRepere,numDevis) REFERENCES devis_repere (idRepere,numDevis)
    );
    Je pense que mon erreur provient des lignes en rouge car j'ai le message suivant :
    Aucune clé primaire ou prototype dans la table référencée 'devis_facture' ne correspond à la liste des colonnes de référence de la clé étrangère 'FK__devis_det__numFa__33D64C46'.

    EDIT : bon je viens de remarquer que j'avais pas créer ma clé primaire pour la facture, je recommence

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est niquel, ça marche Ca ne m'étais pas venu à l'esprit de faire ça comme ça, je le saurais pour la prochaine fois

    Merci beaucoup et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Connection Jbuilder avec MS SQL Server 2000
    Par kchami77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 23h29
  2. Problème installation SQL Server 2000 (programme antérieur)
    Par 404Found dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/04/2005, 10h24
  3. [SQL SERVER 2000] Problème clef étrangére
    Par Tankian dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/05/2004, 10h44
  4. Problème d'installation de sql server 2000
    Par michelci dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/12/2003, 08h02
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

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