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

PHP & Base de données Discussion :

Valeur de l'id d'un enregistrement dans une table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut Valeur de l'id d'un enregistrement dans une table
    Hello,
    j'ai remarqué que la valeur de l'id d'un enregistrement, lorsque celui-ci est en auto-increment, ne se remet pas a jour lorsque l'on supprime et l'on en rajoute un autre derrière.
    Comment faire pour que l'id du nouvel enregistrement prenne la valeur du précédent qui a été supprimé?
    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    L'auto_increment est précisément conçu pour toujours ajouter un à la dernière valeur valeur ajoutée, sans se soucier des suppressions et autres. On peut probablement contourner ce point en réinitialisant l'auto-increment, mais ça ôte un partie de son intérêt.
    mais bon... Comment remettre à zéro un auto-incrément ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Tu peux reseter la valeur courante de l'auto-incrémente de la table mais dans ce cas , elle repart de 0 et donc tu risque d'avoir des doublons.
    Tu peux chercher le max de ta colonne et au moment de l'insertion tu mets la valeur +1 , par contre il faut être sur que l'auto-incrémente de ta table puisse faire le joint par la suite.

    Edit : Toujours faire F5 avant de répondre ....grilled
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    C'est un peu dommage que ça ne se décrémente pas à la suppression d'un enregistrement(vois pas pourquoi ça peut pas se faire )....

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    surement parce que sa casserait l'aspect atomique de l'attribution de la nouvelle valeur de l'auto incrément.
    Mais bon je ne suis pas spécialiste, j'hypothèse...

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si on part de principe que ça doit décrémenter, il faut traiter le cas de la suppression d'un enregistrement ayant une clé auto-incrémentée mais ne se trouvant pas en dernier.
    Genre j'ai des enregistrements allant de 1 à 5, donc mon auto-incrément est à 6. Je supprime 3, que se passe-t-il ?
    L'auto-incrément reprend la valeur 3 (et écrase joyeusement 4 et 5 qui étaient déjà en base) ?
    On décale tout et l'auto-incrément redevient 5 (en considérant la charge si je supprime le 1er de 30 000 enregistrements) ?

    Sinon, tu peux faire un auto_incrément manuel en prenant le maximum de l'id et y ajoutant 1 à chaque enregistrement (en priant pour qu'il n'y ait pas eu une autre insertion via une autre connexion)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/03/2014, 01h14
  2. Réponses: 10
    Dernier message: 15/07/2008, 16h23
  3. Réponses: 2
    Dernier message: 04/07/2008, 20h11
  4. Réponses: 2
    Dernier message: 26/04/2007, 11h52
  5. AJOUT d'un ENREGISTREMENT dans UNE TABLE
    Par ramo dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/08/2005, 16h24

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