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 :

Mise à zero auto_increment


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut Mise à zero auto_increment
    Bonjour j'ai un problème avec la mise à zéro de mon auto increment.

    Après quelques recherches sur internet j'ai essayé par la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE la_table AUTO_INCREMENT=0
    Ma requête s'effectue correctement mais la remise à zéro ne s'effectue pas.

    Puis j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OPTIMIZE TABLE la_table
    là encore rien ne se passe malgré la requête correctement effectuée

    Enfin j'ai trouvé également ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC CHECKIDENT (la_table, RESEED, 0)
    J'ai une erreur de syntaxe.

    Finalement j'ai essayé de passer par l'onglet "opération" afin de mettre l'auto_increment à 0 manuellement. L'opération s'effectue avec succès, or rien ne se passe.

    Quelqu'un aurait une solution à mon problème svp ?

    J'utilise Mysql Version du serveur: 5.1.54
    Type InnoDB

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    ALTER TABLE
    To change the value of the AUTO_INCREMENT counter to be used for new rows, do this:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE t2 AUTO_INCREMENT = value;
    You cannot reset the counter to a value less than or equal to any that have already been used. For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one. For InnoDB, if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.
    Donc je pense que le seul moyen est de vider la table...

  3. #3
    Membre éclairé Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Par défaut
    essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE tablename AUTO_INCREMENT = 1
    en principe ça fonctionne

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par rinuom99 Voir le message
    en principe ça fonctionne
    For InnoDB, if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.
    Donc en principe ça ne fonctionne pas

    Plutôt que de vider la table tu dois pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update la_table set la_col = -la_col
    Mais bon si la colonne en question est une PK... ça n'est probablement pas une bonne idée.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Merci pour vos réponses.
    Effectivement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE tablename AUTO_INCREMENT = 1
    Ne marche pas

    Mais bon si la colonne en question est une PK... ça n'est probablement pas une bonne idée.
    Oui c'est une PK. Je pense que je vais changer le type InnoDB en MyIsam ou bien, tant pis, laisser comme ça ^^

  6. #6
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    En fait, on y vient, et, la bonne question c'est :
    Pourquoi vouloir modifier la valeur de l'AUTO_INCREMENT d'une table ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par Exuna Voir le message
    Je pense que je vais changer le type InnoDB en MyIsam
    Ca ne changera rien :
    For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one.
    Quel est le but de cette réinitialisation ?
    Citation Envoyé par Exuna Voir le message
    ou bien, tant pis, laisser comme ça ^^
    Oui ça m'a l'air d'être la meilleure solution ^^

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    En fait, on y vient, et, la bonne question c'est :
    Pourquoi vouloir modifier la valeur de l'AUTO_INCREMENT d'une table ?
    Car j'ai une table PAIEMENT sur laquelle j'effectue des enregistrements ainsi que des delete. Sachant que j'ai environ 10 - 20 delete par jours et 40 - 50 enregistrements par jours.

  9. #9
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Et alors ?
    Tu crains de manquer d'identifiants ?
    Augmente la taille de la colonne.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Non je souhaite juste faire un peu plus d'ordre dans ma table.

  11. #11
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Sans commentaire.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    C'est toujours dans le forum MySQL que je trouve de quoi rigoler un grand coup !!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  13. #13
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    10 - 20 delete par jours et 40 - 50 enregistrements par jours.
    wow 1500 lignes/mois!

    C'est vrai qu'à ce train-là, vous n'avez que quelques centaines d'années avant d'outrepasser les capacité d'un INT!

    Bon on vous charrie, plus sérieusement ne touchez à rien..

  14. #14
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    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 818
    Billets dans le blog
    14
    Par défaut
    Pour expliquer un peu plus pourquoi vous faites rigoler les experts...

    Un identifiant auto-incrémenté n'a aucune signification pour l'utilisateur du logiciel qui interroge la BDD et cette valeur ne lui est en principe jamais présentée. Ça ne sert qu'à la salade interne du SGBD et notamment pour référencer les clés étrangères dans les autres tables associées.

    Bref, on se fout qu'il y ait des trous dans la série à cause des DELETE ! Un identifiant doit être invariable !

    À lire sur les clés auto-incrémentées.

    La seule utilité de la remise à zéro de l'auto-incrément, c'est quand on a fait des tests et qu'on veut donner une base vide et propre quand on passe en production. On vide d'abord la table puis on remet l'auto-incrément à zéro mais en production, on n'y touche jamais !
    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 !

  15. #15
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 8
    Par défaut
    Bonjour tout le monde,

    Moi j'aime bien apres un TRUNCATE remettre l'id auto_increment a zero
    je fais :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE controle MODIFY ID int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=0;

    et ca marche chez moi.

    Beau temp belle mer.
    Jorgio

  16. #16
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Bonjour Eli42.

    Tu ne réponds pas à la question posée par Exuna et en plus ce sujet date de quatre ans.
    Exuna désire renuméroté sa colonne 'id' qui est une colonne auto incrémenté, sans détruire sa table.

    Or il se trouve que dans sa table 'la-table', c'est colonne 'id' est une Primary Key. A vrai dire, ce n'est pas ça le problème.

    La bonne question est de savoir si cette colonne est utilisé par ailleurs dans la base de données !
    Si cette colonne 'id' est utilisé juste pour rendre unique chaque ligne de sa table et n'a aucune utilité d'un point de vue fonctionnelle, il existe en effet une solution.
    La voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set @i:=0;
     
    update la_table
    set id=(@i:=@i+1)
    ;
    Mais sans information supplémentaire sur cette colonne, il est hasardeux de se prononcer sur la bonne démarche à faire.

    En fait, le problème a surement été mal posé lors de la conception de cette table.
    Il existe d'autres solutions fonctionnelles pour remédier à ce genre de problème, comme par exemple utiliser une colonne de type 'timestamp'.
    Ou bien de mettre la colonne 'id' auto incrémenté au format 'bigint'.

    Je ne voie rien d'hilarant dans ce sujet, juste un problème mal posé.

    @+

Discussions similaires

  1. Mise à zero d'un graph XY express
    Par petit bill dans le forum LabVIEW
    Réponses: 8
    Dernier message: 30/11/2009, 21h48
  2. [E-07] Compteur et bouton de mise à zero
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2009, 18h59
  3. des decimales mises a zero
    Par qeumarh dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/05/2008, 08h59
  4. mise remise a zero de sous menu
    Par masu dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/01/2007, 16h55
  5. remettre un "Auto_increment" à zéro ?
    Par Golork dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2006, 23h35

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