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 :

Réorganiser des auto_increment


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Réorganiser des auto_increment
    Bonjour,

    Voici le contenue d'une de mes tables:

    ID Valeur
    1 XX
    65 XX
    98 XX
    456 XXX

    ID est un champ défini en tant qu'auto_increment.
    Comment faire pour que les ID soit re-mit en tant que 1 2 3 4... comme ceci :

    ID Valeur
    1 XX
    2 XX
    3 XX
    4 XXX

    Merci beaucoup

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    NE JAMAIS FAIRE ÇA !

    L'identifiant auto-incrémenté est une clé technique et sans signification. Par contre, cet identifiant est utilisé en tant que clé étrangère dans les tables associées. Modifier un identifiant oblige à modifier toutes les autres clés associées.
    Il suffit d'avoir oublié un ON UPDATE CASCADE dans une table associée et c'est la pagaille !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    D'accord...
    Cependant, il m'est très important d'avoir une table avec des ID qui se suivent, sans qu'il y ai de trous.

    Il n'y a pas d'autre structure pour le permettre, en utilisant le même système que l'auto increment .. ?

  4. #4
    Membre averti Avatar de diallomad
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 164
    Points : 364
    Points
    364
    Par défaut
    Comment faire pour que les ID soit re-mit en tant que 1 2 3 4... comme ceci :
    Comme te la si bien dis CinePhil c'est pas une bonne idée de modifier les clés existantes pour la cohérence des relations.

    Par contre si les ID ne se suivent pas avec les nouveaux enregistrement tu peux regler l'intervalle entre les ID avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    auto_increment_increment = 1
    Si tu tiens à reorganiser les ID existants tu peux faire un p'tit script PHP (par exemple) pour remettre de "l' ordre" en tenant compte des relations.
    Le chemin de la réussite n'a jamais été une courbe stable tant qu'on respire dans les mêmes fautes sans fin.
    Thomas Sankara

  5. #5
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Citation Envoyé par Franck0 Voir le message
    Cependant, il m'est très important d'avoir une table avec des ID qui se suivent, sans qu'il y ai de trous.
    Cette question revient très souvent, et parmi toutes les personnes ayant affirmées que c'était indispensable, je n'en ai jamais vu aucune apporté une raison valable
    Pourquoi pensez-vous avoir besoin de faire ça ?

    Dans tous les cas, c'est une très mauvaise idée ; expliquez votre besoin et nous pourrons vous proposer une solution qui n'est pas du bricolage

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Merci de votre réponse.
    Finalement, j'ai re-regardé, et j'ai remarqué que... mon champ n'était pas en auto increment. C'est juste un int(11) normal. Est-il alors possible de faire une requette pour réinitialiser ce champ et appliquer à toutes les valeurs un ID dans l'ordre chronologique ? (Peu importe la valeur, il faut juste que une valeur = un numéro, mais que chaque numéro soient différents et qu'il n'y ai pas de trou.)

    Merci beaucoup

  7. #7
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Encore une fois, POURQUOI voulez-vous qu'il n'y ait pas de trous ? C'est probablement une mauvaise raison

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    C'est assez compliqué, mais oui c'est du bricolage et je peux pas vraiment faire autrement sans tout modifier pendant 50 ans
    Mais bon, vu que c'est pas un auto increment et que c'est un simple int, ça doit être facile à faire, non ?

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    En attendant ça fait 5 jours que vous êtes coincé sur ce problème et vous ne nous donnez pas vraiment envie de vous aider davantage !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set @i=0;
    update table set ID = @i:=@i+1
    Si tu fais ceci, tu auras bien 1,2,3,4,..., mais je ne sais pas si l'ordre actuel sera conservé.

Discussions similaires

  1. RAZ des auto_increment
    Par FreddyX dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 13/05/2011, 14h26
  2. [8i][9i] Réorganisation des bases
    Par Débéa dans le forum Oracle
    Réponses: 2
    Dernier message: 01/02/2006, 13h41
  3. [XSL] Réorganisation des données
    Par castaka dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/10/2005, 13h34
  4. [XSLT] Réorganisation des données
    Par castaka dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 18h24

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