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 Procédural MySQL Discussion :

INSERT sur plusieurs tables.


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut INSERT sur plusieurs tables.
    bonjour à tous, c'est mon premier post.

    j'aimerai pouvoir faire un INSERT sur 2 tables en même temps :

    en fait, j'ai 2 tables : une table 'images' (id, blob, type) et une table 'materiel' (id, carac1, carac2, ..., image)

    avec materiel.image qui "pointe" sur images.id

    Mon problème est que j'aimerai pouvoir enregistrer mon l'image coorespondant au matériel en même temps que ses caractéristiques. comment puis-je faire ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut précisions sur le problème
    si je fais d'abord l'INSERT sur la table matériel, je ne saurai pas quel valeur mettre dans le champ image, et si j'INSERT en premier dans la table image, je ne sais pas comment faire pour récupérer l'id (auto_increment) pour le réinjecter après dans la table materiel...

  3. #3
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par Nethervoid21
    si je fais d'abord l'INSERT sur la table matériel, je ne saurai pas quel valeur mettre dans le champ image, et si j'INSERT en premier dans la table image, je ne sais pas comment faire pour récupérer l'id (auto_increment) pour le réinjecter après dans la table materiel...
    D'abord tu doit commencer par l'insertion dans image pour satisfaire la contrainte d'integrité.
    Pour récuperer l'autoincrémentant essaye d'utiliser 'nextval', ou tu peux le faire autrement selon le langage de programmation que tu utilise.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    j'utilise du PHP.

    sinon, dans mysql, je récupère en faisant :

    SELECT nextval(id) FROM images

    ??

  5. #5
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par Nethervoid21
    j'utilise du PHP.

    sinon, dans mysql, je récupère en faisant :

    SELECT nextval(id) FROM images

    ??
    Tu peux créer une sequence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE SEQUENCE ma_sequence;
    et l'utiliser pendant l'insertion dans image par ma_sequence.nextval .
    et dans l'autre table par ma_sequence.currval .

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    oulah, j'ai rien compris.

  7. #7
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par Nethervoid21
    oulah, j'ai rien compris.
    tu crée la sequence comme indiqué precedement,
    puis tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into images(ma_sequence.nextval,blob,type)
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into materiel(id,car1,car2...,ma_sequence.currval)
    donc ma_sequence sera utiliser pour savoir la valeur actuel de l'id. mais tu doit utilser ma_sequence seulement pour incrémenter ce champ image.id!!!

  8. #8
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Sequence est réservé à Oracle. MAxDB (de MySQL) gère ce mot clef, mais c'est seulement un synonyme pour l'implémentation de la base. Pour les séquences, je vous renvoie à la documentation officielle sur AUTO_INCREMENT et sur LAST_INSERT_ID(), LAST_INSERT_ID(expr)

    3.6.9 Utiliser AUTO_INCREMENT

    12.8.3. Fonctions d'informations

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

Discussions similaires

  1. [1.x] formulaire d'insertion sur plusieurs tables à fois
    Par belgacem.tlili dans le forum Symfony
    Réponses: 4
    Dernier message: 24/02/2010, 20h42
  2. Faire un Insert sur plusieurs tables liées
    Par tiboleo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 07/02/2010, 23h16
  3. INSERT sur plusieurs tables
    Par ROMS77 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/06/2009, 14h53
  4. Requête INSERT sur plusieurs tables
    Par sircus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/01/2009, 08h30
  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