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 :

INSERT INTO (plusieurs tables)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut INSERT INTO (plusieurs tables)
    Bonjour,je suis nouveaux ici

    J'aimerais savoir si il est possible d'insérer deux tables en meme temps,je m'explique :

    -Table JOUEUR : (joueur_num,joueur_type,joueur_civilite,etc...)
    -Table Reglement : (Reglement_num,reglement_date,reglement_mode,etc..)

    j'aimerais savoir si dans une requete INSERT on peut insérer les deux tables en meme temps,comme on peut lire plusieurs tables avec un SELECT.C'est pour une application VB.net .(j'espere que c'est bien dans ce topic qu'il faut que je poste )

    Si oui,est ce que quelqu'un pourrait me mettre un exemple avec les tables au dessus. merci !!

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Une seule table à la fois
    Avec une seule clause INSERT, je ne pense pas qu'on puisse simultanément ajouter des lignes dans deux ou plusieurs tables. Il faut faire un INSERT par table.

    Quel est ton SGBD et que cherches-tu à faire précisément pour faire une telle demande ?

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Vous pouvez aussi utiliser un trigger BEFORE INSERT sur une des 2 tables qui effectuera SYSTEMATIQUEMENT l'insertion dans l'autre table...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Je cherche a connaitre la syntaxe :

    INSERT INTO "TABLE1" "TABLE2" (champs+champs2......)
    VALUES ......

    ou alors

    INSERT INTO "TABLE1" (champs1......)
    VALUES ......

    INSERT INTO "TABLE2" (champs2.....)
    VALUES ......

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par ghis33
    INSERT INTO "TABLE1" "TABLE2" (champs+champs2......)
    VALUES ......
    ça n'existe pas en standard dans la norme SQL : http://sql.developpez.com/sqlaz/dml/#L1

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Ok,merci j'ai trouvé ce qu'il me fallait

  7. #7
    Membre du Club
    Profil pro
    Import/Export des solutions
    Inscrit en
    Janvier 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Import/Export des solutions

    Informations forums :
    Inscription : Janvier 2005
    Messages : 39
    Points : 41
    Points
    41
    Par défaut
    salut!
    Chef,c peut-etre tres tard vu la date du message.
    pourrais-tu mettre ici la solution que tu as trouvé?
    Merci

  8. #8
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Dans la norme SQl, il n'est pas possible d'insérer les valeurs dans deux tables distinctes dans la même instruction.
    Par contre, il est possible de mettre les deux INSERT dans la même transaction (c'est même fortement conseillé si les données sont liées par une contrainte).

    Voici la syntaxe SQL (norme 2003) de INSERT
    <insert statement> ::=
    INSERT INTO <insertion target> <insert columns and source>
    <insertion target> ::= <table name>
    <insert columns and source> ::=
    <from subquery>
    | <from constructor>
    | <from default>
    <from subquery> ::=
    [ <left paren> <insert column list> <right paren> ]
    [ <override clause> ]
    <query expression>
    <from constructor> ::=
    [ <left paren> <insert column list> <right paren> ]
    [ <override clause> ]
    <contextually typed table value constructor>
    <override clause> ::=
    OVERRIDING USER VALUE
    | OVERRIDING SYSTEM VALUE
    <from default> ::= DEFAULT VALUES
    <insert column list> ::= <column name list>
    Cordialement,

    Arkhena

  9. #9
    Membre du Club
    Profil pro
    Import/Export des solutions
    Inscrit en
    Janvier 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Import/Export des solutions

    Informations forums :
    Inscription : Janvier 2005
    Messages : 39
    Points : 41
    Points
    41
    Par défaut
    Merci de la rapidité de ta reponse mais je suis desolé de demander plus avec tes exemples concret parceque je ne comprend pas trop
    table user(id_user,nom,prenom,adresse)
    table News(id_news,id_user,exp,des,msg)

    je veux inserer dans les deux tables

    insert into user (nom,prenom)values('martin','serge')
    insert into News(exp,dest,msg)value ('txt_exp','txtdes','txt_msg')
    sachant que user.id_user=News.id_user)
    Merci

  10. #10
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Je comprends nettement mieux la question maintenant. Il n'y a pas moyen en SQL de lui dire que la valeur de la clef étrangère de la table 2 se trouve dans la valeur de la table 1 qu'on vient d'insérer.

    Par contre, il faut insérer les valeurs dans l'ordre pour que ça marche, sinon on se retrouve avec une contrainte d'intégrité réferentielle violée et ça, les SGBD n'aiment pas.

    Je ferai donc plutôt un truc dans le style suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    INSERT INTO user (nom,prenom)values('martin','serge');
    -- La ligne précédente comporte la valeur de user.id s'il s'agit d'un incrément automatique
    INSERT INTO News(exp,dest,msg, id_user) 
      SELECT 'txt_exp','txtdes','txt_msg', id_user 
      FROM user
      WHERE nom = 'martin'
          AND prenom = 'serge'
    Bon, cette méthode est assez barbare et primaire ne fonctionne que s'il y a un seul Serge Martin dans les users. Peut-être que cela suffit à résoudre ton problème.

    Autrement, en postgreSQL et Oracle, on doit pouvoir utiliser la valeur RETURNING dans une fonction pour faire ça. Sous les autres SGDB, je ne sais pas...

    Cordialement,

    Arkhena

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

Discussions similaires

  1. [Insert into] Plusieurs tables
    Par razorlok dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/06/2008, 13h11
  2. INSERT sur plusieurs tables.
    Par Nethervoid21 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 18/11/2006, 11h22
  3. Insertion dans plusieurs tables : Transaction ?
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2006, 18h25
  4. Requête : Insert avec plusieurs tables
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 21h42
  5. INSERT sur plusieurs tables
    Par juniorAl dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/03/2005, 18h59

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