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

Langage SQL Discussion :

2 champs = clé primaire


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut 2 champs = clé primaire
    salut tout le monde,

    peut-être mon problème est simple: je veux créer 3 tables dans Oracle, deux normales: clé primaire, clé primaire, mais la 3ème avec un clé primaire composé de 2 champs dans cette table, et ces 2 champs qui représentent aussi en même temps des clés étrangers venus des 2 premiers tables.

    Bref, voici mes tables :

    SALARIE (Num int, Nom varchar(12), Tel varchar(12), poste varchar(12),E_mail varchar(30),N_sup int, DateEmb date,salaire numeric,N_Ser int).
    PROJET (CodeP varchar(6), NomP varchar(12)))
    PARTICIPATION (Num int, CodeP varchar(6), Fonction varchar(12)).

    voici mes tentatives:

    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
    create table PROJET(
     CodeP varchar(6),
     NomP varchar(12),
     constraint pk11 primary key (CodeP)
    )
     
    create table SALARIE(
     Num int,
     Nom varchar(12),
     Tel varchar(12),
     poste varchar(12),
     E_mail varchar(30),
     N_sup int,
     DateEmb date,
     salaire numeric,
     N_Ser int,
     constraint pk47 primary key (Num)
    )
     
    create table PARTICIPATION(
     Num int foreign key references SALARIES,
     CodeP varchar(6) foreign key references PROJET,
     Fonction varchar(12),
     primary key (Num, CodeP)
    )
    les deux premiers tables sont crées avec succès, la 3ème table (PARTICIPATION) lance une erreur : une parenthèse de droite absente, j'ai essayé de régler le problèmes avec des changements, mais ça n'a pas marché

    j'espère recevoir vos suggestions le plus tôt possible.
    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Je suis hors de mon domicile, je ne peux tester mais ceci devrait aller.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE PARTICIPATION(
     Num int FOREIGN KEY REFERENCES SALARIES,
     CodeP varchar(6) FOREIGN KEY REFERENCES PROJET,
     Fonction varchar(12),
     Constraint MaCle PRIMARY KEY (Num, CodeP)
    )

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut
    ça n'a pas marché !

    erreur: parenthèse de droite absente

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Pour une contrainte d'intégrité référentielle il faut donner le nom de la table et le nom de chaque colonne composante la clef.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE PARTICIPATION
    (
     Num int FOREIGN KEY REFERENCES SALARIES (Num),
     CodeP varchar(6) FOREIGN KEY REFERENCES PROJET (CodeP),
     Fonction varchar(12),
     Constraint PK_PARTICIPATION PRIMARY KEY (Num, CodeP)
    )
    Lisez ce que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...partie2#L7.1.7

    a +

  5. #5
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut
    je suis pas fièr de le dire, mais ça n'a pas marché aussi !!
    ça énerve

    bizarre

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Quel est votre SGBDR ?

    De plus vous avez fait une erreur que j'ai d'ailleurs reprise en ajoutant un S à la table SALARIES dans la contrainte FK.

    Essayez un peu de lire les message d'erreur que vous envoi le SGBDR ! Faites quelques effort !!!!

    A +

  7. #7
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut
    j'ai fait mes effort avant de penser à vous adresser la parole monsieur.
    c'est vrai, le S était une bonne remarque, mais pourtant ça n'a pas remédié le problème.

    et pour vous prouver que mes cellules mentale sont encore bien actives, voici comment j'ai remédié le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE PARTICIPATION(
     Num int,
     CodeP varchar(6),
     Fonction varchar(12),
     constraint fff PRIMARY KEY (Num, CodeP)
    )
    alter table PARTICIPATION add constraint hhh FOREIGN KEY (Num) REFERENCES SALARIE(Num);
    alter table PARTICIPATION add constraint hhh45 FOREIGN KEY (CodeP) REFERENCES PROJET(CodeP);
    désolé pour le S

    Merci de votre patiente comme même

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Ceci ne vous empêche pas de respecter la charte de postage en indiquant par exemple votre SGBDR cela fera gagner du temps à tout le monde et c'est aussi une marque de politesse !

    A +

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    en indiquant par exemple votre SGBDR
    C'est dans son premier post même s'il manque la version :
    Citation Envoyé par soufian1364 Voir le message
    je veux créer 3 tables dans Oracle
    Si vous voulez les clefs étrangères dans le script de création de la table, utilisez la syntaxe suivante :
    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
    CREATE TABLE PARTICIPATION
    (
      Num int,
      CodeP varchar(6),
      Fonction varchar(12),
      CONSTRAINT PK_Participation -- je vous conseille de la nommer mieux que fff, ce sera aussi le nom de l'index
        PRIMARY KEY (Num, CodeP)
        USING INDEX Tablespace <MyIndexTablespace>,
      CONSTRAINT FK_Participation_Salarie -- idem, nom utile même si pas d'index ici
        FOREIGN KEY (Num)
        REFERENCES SALARIE (Num),
      CONSTRAINT FK_Participation_Projet -- idem, nom utile même si pas d'index ici
        FOREIGN KEY (CodeP)
        REFERENCES PROJET (CodeP)
    )
    Tablespace <MyDataTablespace>

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

Discussions similaires

  1. condition champ clé primaire
    Par yomaneoz dans le forum IHM
    Réponses: 3
    Dernier message: 13/03/2009, 14h20
  2. valeur par defaut d'un champ cle primaire
    Par amne26 dans le forum IHM
    Réponses: 1
    Dernier message: 09/10/2008, 06h10
  3. autoincrementation d'un champs clé primaire
    Par kkkkkk dans le forum SQL
    Réponses: 2
    Dernier message: 18/06/2007, 16h17
  4. retour de chariot sur champs clé primaire
    Par azde7015 dans le forum Access
    Réponses: 5
    Dernier message: 03/04/2006, 14h46
  5. Réponses: 6
    Dernier message: 25/03/2006, 17h46

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