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

Requêtes MySQL Discussion :

recupérer tous les id d'une requete d'insertion etendue


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut recupérer tous les id d'une requete d'insertion etendue
    Hello,

    je voulais savoir s'il existait un moyen de récupérer tous les id (auto_increment) générés lors d'une requete d'insertion étendue genre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (id, nom) VALUES (NULL, 'nom1'), (NULL, 'nom2'), (NULL, 'nom3')

    Car je fais des insertion de masses et ce genre de requête est bien plus rapide à l'execution.

    Merci d'avance

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    A part un SELECT max(id) avant l'insertion et un SELECT LAST_INSERT_ID() après, je ne vois pas...

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    oui mais ce n'est pas très fiable de plus last_insert_id ne renvoi pas le dernier mais le premier id généré dans le cas d'une insertion étendue.

    Ce que j'ai trouvé sur le net le confirme:

    You can retrieve the most recent AUTO_INCREMENT value with the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. Note: For a multiple-row insert, LAST_INSERT_ID()/mysql_insert_id() will actually return the AUTO_INCREMENT key from the first of the inserted rows. This allows multiple-row inserts to be reproduced correctly on other servers in a replication setup.
    ce texte date d'un an mais je suis sous mysql 5 et ca me fais la meme chose... donc je pense que c'est tjs d'actualité.

    Et faire un max() apres la requete c'est encore moins fiable...

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par cmoiscrat
    oui mais ce n'est pas très fiable de plus last_insert_id ne renvoi pas le dernier mais le premier id généré dans le cas d'une insertion étendue.
    Oui, bien vu

    Citation Envoyé par cmoiscrat
    Et faire un max() apres la requete c'est encore moins fiable...
    Si on encapsule ça dans une transaction c'est faisable.

    Pourquoi veux-tu récupérer les id générés ?

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 119
    Points
    119
    Par défaut
    J'insere en masse des mots clé trouvé dans un document puis je dois faire le lien entre le document et les nouveaux mots clé insérés...

    Faute de mieux j'utilise un flag lors de l'insertion... pour pouvoir les resélectionner juste apres

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par cmoiscrat
    je dois faire le lien entre le document et les nouveaux mots clé insérés...
    Je suis peut-être à côté de la plaque mais je ne vois pas où est le problème...
    A partir du moment où tu as l'identifiant du document il suffit de le mettre en clé étrangère des lignes de la table mots-clés nouvellement insérées non ?

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/08/2012, 13h47
  2. [MySQL] Traitement de tous les résultats d'une requete
    Par MissElo dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/04/2010, 18h55
  3. recupérer les reponses d'une requete
    Par friedamichelle dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 17/03/2008, 12h47
  4. requete ajout caractere sur tous les champs d'une table
    Par lorenzo74 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/06/2006, 14h34
  5. [MySQL] Récupérer les id d'une requete d'insertion etendue?
    Par cmoiscrat dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/02/2006, 10h42

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