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

Développement SQL Server Discussion :

question:insertion simultanée dans deux tables


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 17
    Points
    17
    Par défaut question:insertion simultanée dans deux tables
    bonjour les experts
    est ce que je peux insérer des données dans deux tables différents en méme temps(mem requete)? a partir d'un formulaire windows(vb.net) ?????

    req= insert into TABLE1(champ1,cham2...)values(v1,v2)
    insert into TABLE2(ch1,ch2...)values(v1,v2...)

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Rien ne vous en empêche.
    Il faut que vous exécutiez les deux requêtes comme un lot, ou alors que vous écriviez une procédure stockée que vous appelez dans votre application.

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 924
    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 924
    Points : 51 724
    Points
    51 724
    Billets dans le blog
    6
    Par défaut
    Ou bien passer par une vue avec un trigger INSTEAD OF.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -- les tables
    CREATE TABLE T1 (C10 INT, C11 INT)
    GO
    CREATE TABLE T2 (C20 INT, C21 INT)
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    -- la vue
    CREATE VIEW V
    AS
    SELECT *
    FROM   T1
    CROSS  JOIN T2
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- le déclencheur
    CREATE TRIGGER I_V
    ON V
    INSTEAD OF INSERT
    AS
    INSERT INTO T1 SELECT C10, C11 FROM INSERTED;
    INSERT INTO T2 SELECT C20, C21 FROM INSERTED;
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -- l'insertion multitable :
    INSERT INTO V VALUES (1, 2, 3, 4);
    GO
    Voir ce que j'ai écrit à ce sujet dans la règle 6 de Codd (explications)
    http://sqlpro.developpez.com/SGBDR/ReglesCodd/

    A +

    A +

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 17
    Points
    17
    Par défaut
    Mr frédéric j'ai pas bien saisie votre explication
    jai créer le trigger et ça na pas marché parce que j'insère mes données a partir des textbox. pour mieux expliquer jai un formulaire qui contient des données concernant le client et sa réclamation et quand je saisie les données il faut qu'elles soit enregistrées dans les tables 'Reclamation.dbo' et 'Client.dbo' en même click(bouton créer)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour.
    Votre solution fonctionne très bien Sqlpro.
    Mais que peut on faire dans la situation où on veut insérer dans deux table où une référence l'autre .
    exemple:
    service(NUM_SERV,libelle,NUM_EMP)
    emp(NUM_EMP,nom,prenom,NUM_SERV)

    Merci d'avance.
    Cordialement

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    dans votre exemple, est-ce que le NUM_EMP de la table service correspond au responsable du service ?

    Cette colonne est-elle nullable ?

    Est-ce que vous cherchez donc a créer un nouveau service, avec obligatoirement un nouvel employé comme responsable ?

Discussions similaires

  1. [MySQL] Échec d'insertion dans deux tables simultanément
    Par Anibel dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/02/2013, 19h18
  2. [MySQL] Mise à jour simultanée dans deux tables
    Par IGalaxy dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/04/2009, 21h26
  3. Insertion SQL dans deux tables
    Par Pwouaro dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/06/2008, 16h38
  4. insertion dans deux tables
    Par bidule123456 dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/08/2007, 09h19
  5. Insertion croisée dans deux tables mysql
    Par tiger33 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/09/2006, 09h55

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