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

Administration MySQL Discussion :

reinitialiser clé primaire auto-increment


Sujet :

Administration MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Points : 9
    Points
    9
    Par défaut reinitialiser clé primaire auto-increment
    Bsr a tous
    SVP j'aimerai avoir la syntaxe sql qui permet de reinitialiser l'auto-increment apres avoir fait une mise a jour sur une table
    Exp: si jai comme clé les valeurs allant de 1 à 5 et apres supression de l'enregistrement ou la clé est 3 il faudrai que l'enregistremnt de clé 4 ait maintenant la clé 3.......

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    ça sert à rien. Une clé artificielle ne doit pas avoir de sens intrinsèque.
    sinon update, ça marche bien.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    si tu as besoin de numéroter tes lignes, il faut les compter
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonsoir.

    Voici un exemple qui pourrait te servir : soit une table nom_table (id_table)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* On supprime une occurrence */
    DELETE nom_table
    WHERE id_table = 3;
     
    /* On "comble le trou" s'il y en a un (ce qui n'est pas toujours souhaitable) */
    UPDATE nom_table
    SET id_table = id_table - 1
    WHERE id_table > 3;
     
    /* On réinitialise l'auto_increment (cela permettra au prochaine occurrence de suivre la plus grande valeur du champ auto incrémenté enregistré dans la table) */
    ALTER TABLE nom_table auto_increment = 0;
    En espérant t'avoir aidé,

    Idriss

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    juste pour polémiquer,

    une colonne auto-increment c'est une clé primaire.
    une clé primaire est souvent utilisée pour faire des clés secondaires.
    modifier les clés primaire c'est soit

    • perdre le lien avec les clés secondaires (MyISAM par exemple) (par exemple avoir des clés secondaire qui n'existent plus dans la clé primaire)
    • encore plus vicieux créer décaler les clés secondaires par rapport à la clé primaire, c'est à dire faire une salade de donnée.
    • s'offrir le luxe de réécrire toute les clés étrangères (à condition d'avoir ON UPDATE CASCADE activé et INNODB ) et là en fonction de la taille de la base de donnée et du nombre de table, on peut faire un déni de service sur une base uniquement en provocant des suppressions dans la base.



    Quel est l'intéret? merci de rayer la mention fausse.
    • on est arrivé à max Autoincrement, ya des trous, on compacte.... j'imagine aussi qu'il y a une quantité de données telle qu'il faut essayer de trouver quelque chose d'autre (genre est-ce qu'il n'y aurait pas des lignes à archiver en même temps). de toute façon les temps vont être dur parce que cette solution n'est que provisoire.
    • ça fait du bien à l'administrateur de la base de savoir que l'enregistrement id = 100 est le 100ieme enregistrement et non le 27e. Si c'est bien pour la tête du DBA d'accord, mais c'est d'aucune utilité, vu que pour avoir le nombre d'enregistrement il suffit de savoir faire un COUNT() en SQL et que tous les moteurs de bases de données gardent des stats simplissimes comme ça en cache.



    Maintenant prenons le cas d'un blog sur le web. Si un article est identifié par son numéro d'enregistrement dans la base de donnée et que ce numéro est présent dans l'url permettant de lire l'article (cf les url de ce forum pour ce faire une idée) , vous allez perdre google en changeant les url des articles parce que vous avez renuméroté ceux-ci. Et vous allez casser les favoris de vos visiteurs, ce qui est peut-être pire.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonsoir.

    C'est pour ça que j'ai mis en commentaire "ce qui n'est pas toujours souhaitable" pour la seconde requête.

    En effet, il faut veiller a respecter les contraintes d'intégrité référentielle et cela peut engendrer, dans certains cas, d'autres problèmes comme l'exemple du blog que vous avez soulevés (problème au niveau du référencement mais aussi des liens vers articles, etc), étant également développeur web, j'en suis parfaitement conscient ... mais après tout dépend du contexte.

    Cependant, la troisième requête garde son utilité car elle ne modifie aucune occurrence (donc pas de problèmes au niveau des contraites ni du référencement ou autre dans le cas d'un site web, etc) tout en évitant les trous pour les prochaines entrées (ce qui optimise la table).

    Cordialement,
    Idriss

    P.S : même si la plupart du temps on applique l'auto_incremente sur un champ primary key, rien n'oblige un champ autobincrémenté a être clef primaire. Il faut quand même distinguer ces deux notions

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par ok.Idriss Voir le message
    Bonsoir.

    Cependant, la troisième requête garde son utilité car elle ne modifie aucune occurrence (donc pas de problèmes au niveau des contraintes ni du référencement ou autre dans le cas d'un site web, etc) tout en évitant les trous pour les prochaines entrées (ce qui optimise la table).

    Cordialement,
    Idriss

    en effet, j'y avais pas pensé. merci pour le tuyau.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. [pgAdmin 3] Clé primaire + auto increment
    Par nicou_doude dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/05/2008, 14h03
  2. Cle Primaire : Auto-Increment ou Artificiel?
    Par sup dans le forum Schéma
    Réponses: 5
    Dernier message: 07/07/2007, 16h49
  3. [Sql server 2005] Clé primaire auto increment
    Par nemya dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 17/10/2006, 22h58
  4. [DB2] Reinitialiser un champ auto increment
    Par Robbie dans le forum DB2
    Réponses: 3
    Dernier message: 05/07/2006, 12h00
  5. Création Clé primaire auto-incremente - Access 2000
    Par Didier100 dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/10/2004, 19h30

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