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

SQL Oracle Discussion :

Crée une clé etrangère sur un utilisateur.


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Par défaut Crée une clé etrangère sur un utilisateur.
    Bonjour à tous.
    Je doit créer une base sql qui contiendra le contenu d'un forum.
    Chaque utilisateur possèdent un compte sql.

    Je veut donc créer une table qui contient des informations sur les utilisateurs et pour que sa ne soit pas redondant je décide de ne pas remettre le NOM dans ma nouvelle table.
    Mais dans cette table il y a un champs qui doit référencer à l'id du compte utilisateur, mais je ne le trouve pas, je ne sais pas quelle table elle correspond.
    Merci de bien vouloir m'éclairer

  2. #2
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Je sais pas si j'ai bien compris ta question... mais tu as la vue dba_users qui contient les infos sur les utilisateurs. Tu dois etre connecté en sys pour y avoir accès:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select user_id, username
    from dba_users;
    Pour avoir le nom de l'user connecté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select user
    from dual;
    à partir de là tu peux utiliser la vue dba_users pour avoir l'id.

    P.S: Si j'ai compris ta question, ton titre n'a rien a voir avec le contenu de ton post. "Recuperer id d'un user de la base" aurait été mieux.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Par défaut
    Nikel, merci beaucoup, et oui j'ai mal formuler ma question.
    Bonne fin de journée.

  4. #4
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut le tag resolu
    C'est bien essayé mais c'est pas comme cela... t'as mis "resolu" dans le titre de ton post.
    Tu devrais regarder en bas, juste à coté du bouton "ajouter une reponse" il doit avoir un bouton "résolu" à droite. Et tu cliques dessus.

    a+++++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Par défaut
    Je n'arrive pas à crée ma FK, je doit surement louper encore un truck.

    voici ma commandes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE utilisateur  (
      idutilisateur NUMBER CONSTRAINT PK_utilisateur PRIMARY KEY,
      dernierevisite DATE,  
      anniversaire DATE,  
      email varchar(50) ,
      CONSTRAINT FK_idutilisateur foreign KEY(idutilisateur) REFERENCES dba_users(USER_ID)
    );
     
    ORA-00942: Table ou vue inexistante

  6. #6
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Ton erreur vient peut être du fait que la vue DBA_USERS appartient à sys, tu devrais mettre SYS.DBA_USERS.

    Cependant, je ne pense pas que ce soit possible ainsi (les experts du forum vont me corriger si je me trompe), car DBA_USERS est une vue système et la contrainte FOREIGN KEY est associée à une clé primaire d'une table ou d'une vue utilisateur.

    Je crois que ç'aurait été possible si la vue avait été crée par toi même avec la clause CREATE VIEW ... bref il y'a une syntaxe pour créer une vue avec clé primaire.

    Tu pourrais peut être mettre l'username ou l'id de l'user directement dans ta table utilisateur. Par la suite, si tu as besoin de plus d'informations sur l'user tu peux interroger la vue DBA_USERS.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Par défaut
    Ok merci bien de ton aide, mais je n'arrive toujours pas a lier mon champs a cette table ou cette vue qui n'a pas de primary key.
    Si vous avez une solution.

  8. #8
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Je n'ai pas trouvé non plus. Les vues ne sont pas la panacée non plus car les contraintes doivent être créées en DISABLE NOVALIDATE (cf ici) :
    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
    SQL> CREATE VIEW V_ALL_USERS (USER_ID, CONSTRAINT ma_pk PRIMARY KEY (USER_ID) DISABLE NOVALIDATE) AS SELECT USER_ID FROM ALL_USERS;
     
    Vue créée.
     
    SQL>
    SQL> CREATE TABLE utilisateur  (
      2    idutilisateur NUMBER CONSTRAINT PK_utilisateur PRIMARY KEY,
      3    dernierevisite DATE,
      4    anniversaire DATE,
      5    email varchar(50) ,
      6    CONSTRAINT FK_idutilisateur FOREIGN KEY(idutilisateur) REFERENCES V_ALL_USERS(USER_ID)
      7  );
    CREATE TABLE utilisateur  (
    *
    ERREUR à la ligne 1 :
    ORA-02270: no matching unique or primary key for this column-list
    Peut-être une vue matérialisée que tu refresh souvent ou une table que tu alimentes souvent. Ou un trigger sur ta table utilisateur pour contrôler la référence dans ALL_USERS.

  9. #9
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Citation Envoyé par xoum89 Voir le message
    Ok merci bien de ton aide, mais je n'arrive toujours pas a lier mon champs a cette table ou cette vue qui n'a pas de primary key.
    Si vous avez une solution.
    Je pense que la solution la plus simple est
    Citation Envoyé par rvfranck Voir le message
    Tu pourrais peut être mettre l'username ou l'id de l'user directement dans ta table utilisateur. Par la suite, si tu as besoin de plus d'informations sur l'user tu peux interroger la vue DBA_USERS.
    Sinon oui, les vues matérialisées feront l'affaire.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/12/2007, 11h42
  2. Réponses: 25
    Dernier message: 15/07/2007, 13h41
  3. Réponses: 1
    Dernier message: 29/06/2007, 03h26
  4. crée une action sur un JMenuItem
    Par kespy13 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 26/03/2007, 13h50
  5. Réponses: 6
    Dernier message: 15/03/2007, 13h55

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