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 :

Traitement des auto_incréments sur un insert en masse


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Par défaut Traitement des auto_incréments sur un insert en masse
    Bonjour,

    Lorsqu'une requête insère plusieurs enregistrements (voir beaucoup), est-ce que les valeurs de la colonne d'index auto-incrémentée est assurément une suite de valeurs non interrompue ? ou est-ce qu'un autre processus qui exécuterait sa requête d'insertion en même temps pourrait générer des valeurs d'index qui s'intercaleraient ?

    Merci d'avance pour les réponses !!!

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Quelle importance ?
    Un identifiant n'a aucune signification donc peu importe que ce soit une suite continue ou non.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Quelle importance ?
    J'ai une table ADR dont un champ référence la clé d'une autre table CNT.
    J'ai un très grand nombre d'enregistrements de CNT à créer, et des enregistrements de ADR qui doivent s'y associer.

    Donc j'appelle "INSERT INTO CNT (...) VALUES (...), (...), (...), etc." (voir faire un load data infile).
    Puis je souhaite construire ma requête sur ADR avec "INSERT INTO ADR (ID_CNT,...) VALUES (X,...), (X+1,...), (X+2,...), etc.", X étant la valeur retournée par LAST_INSERT_ID.

    Et je ne peux le faire que si je suis sûr que les ids fournis aux enregistrements de CNT forment une suite continue.
    Si je n'en suis pas sur, je dois alors faire un insert de CNT puis un insert de ADR, puis un inser de CNT, puis un de ADR, etc., ce qui n'est absolument pas gérable au niveau performances.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Une clef auto-incrémenté permet une chose : être sure à 100% d'avoir un nombre unique.

    Par contre il ne garanti pas que les nombres générés au fur et mesure soient continu.

    Il suffit qu'il y ai un appel concurrent pour ne plus avoir de suite dans ces nombres au sein d'une même transaction.

    Un rollback d'une transaction d'insert fera aussi un "trou" dans les nombres générés.

    Mais comme le spécifie Cinephil ceci n'a pas d'importance car son but 1er n'est pas de générer une suite de nombre mais bien de générer un nombre unique afin de l'affecter à une clef primaire

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Par défaut
    Je ne parle pas de transaction ni de plusieurs requêtes d'insertions exécutées les unes après les autres. Il n'y a qu'une seule requête qui insère directement plusieurs enregistrements (insert into maTable (...) values (...),(...),(...),etc).

    Ce que je souhaite savoir c'est si cette requête est exécutée de façon atomique ou pas ?

    Merci

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    ici vous aurez les réponses à vos questions : http://dev.mysql.com/doc/refman/5.5/...-handling.html

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

Discussions similaires

  1. [MySQL] Traitement des données sur une checkbox - Formulaire
    Par kenjiendo dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 08/08/2011, 11h35
  2. Ordre de traitement des opérateurs sur un select
    Par tchoimars dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/05/2007, 18h42
  3. erreur sur l'insertion des commentaires dans excel
    Par fulgaro dans le forum Excel
    Réponses: 1
    Dernier message: 19/02/2007, 08h09
  4. Demande un Logiciel de traitement des graphes sur linux
    Par razouk dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 09/05/2006, 20h45
  5. Réponses: 11
    Dernier message: 13/04/2006, 15h18

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