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 :

insertion d'une clé étrangère


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut insertion d'une clé étrangère
    Bonjour, j'ai un énorme trou de mémoire !!!
    comment faire pour insérer une clé étrangère dans une table ?

    table1 (numT, nom, prenom)
    table2(numT2, numT, montant)

    Merci beaucoup....

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Qu'entends-tu par "insérer une clé étrangère" ?
    Ajouter une ligne dans une table ? Ou modifier la structure d'une table ?

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    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 119
    Points : 31 627
    Points
    31 627
    Billets dans le blog
    16
    Par défaut
    Alter table table2
    Add Constraint nomcontrainte Foreign Key (numT) References table1 (numT)
    On Update ... On Delete ...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    oups désolée, je parlais de l' INSERT INTO...

  5. #5
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    tu dois simplement mettre une des valeurs de numT contenue dans la la Table1

    Si par exemple ta table 1 est composée de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    numT         Nom
    -----------------
    1              Bertrand
    2              Grégory
    3              Antoine
    et que tu veux insérer "Bertrand" dans ta table 2, tu devras donner à numT de table 2 la valeur 1.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    oui je sais ;-)

    mais dans la pratique, comment lui dire que Bertrand = 1 ?

  7. #7
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    En pratique on le fait pas en sql ça (en tout cas moi...), c'est surtout au niveau de ton application que tu récupères les valeurs de ta table1 et tu fais ton insert en fonction de l'élément choisi (où tu auras récupérer la valeur numT de l'élément choisi)

    Sinon en sql tu aurais quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Table2(numT2, numT, montant)
         SELECT 1, t.numT ,100
              FROM Table1 AS t
              WHERE t.nom = 'Bertrand'

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    ok merci, donc la condition where est obligatoire ? , car j'ai des données, et je dois tout mettre dans deux tables en même temps...donc ce que je fais c'est un premier insert dans la table 1, je récupère la clé et je fais l'insert dans la table 2 avec l'ID, mais si entre temps quelqu'un créé un compte, l'ID que je récupère peut ne pas etre le bon...

    voilà le soucis,
    bonne journée...

  9. #9
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    il me semble, mais faudrait confirmation, que quand tu récupères l'id avec SELECT @@IDENTITY ça ne récupères que le dernier ID inséré par la session en cours.

    Sinon, non le where n'est pas obligatoire... et si tu veux pouvoir insérer des données spécifiques par rapport à un nom, il me semble que le "CASE, WHEN" doit être possible

Discussions similaires

  1. [MySQL] insertion dans deux tables avec une clé étrangère
    Par reseau.reseau dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 23/03/2014, 14h04
  2. Réponses: 4
    Dernier message: 17/02/2014, 19h27
  3. Insertion d'une valeur null dans une clé étrangère
    Par labib23dz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/03/2012, 11h24
  4. Pb clé étrangère dans l'insertion dan une DB Oracle à partir de J2EE
    Par aafaa dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 09/11/2010, 11h11
  5. [MySQL] Insertion avec une clé étrangère
    Par sibile dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/08/2008, 00h28

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