Modifier valeurs auto increment

Eléphant du PHP | 337 Messages

03 juil. 2007, 13:49

Bonjour à tous.

J'ai une table MySql avec beaucoup, beaucoup d'enregistrements, et j'ai un système pour purger les moins pertinents de façon régulière. Existe-t-il une commande sql qui permette de renommer les champs id (en auto increment) de sorte qu'après la purge de la table, les n° d'id se suivent de nouveau et la valeur courante de l'auto increment soit remise à jour ?

Cela donnerait donc, en gros :

Avant purge : 1-2-3-4-5-6-7-8-9-10 (valeur auto increment : 11)
Après purge : 2-5-8-9-10 (valeur auto increment : 11)
Renommer id : 1-2-3-4-5 (valeur auto increment : 6)

Merci pour votre aide : )

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

03 juil. 2007, 14:10

:afraid:

Au risque de te paraître sévère, je dirai que ta question prouve
que tu n'as pas compris la nature et le but d'un identifiant auto-incrémenté.

La règle est bien simple : Un identifiant ne doit pas être modifié ou réattribué. :!: :non:

Plusieurs sujets ont déjà traité cette question.
Je crois me souvenir que Ryle avait contribué à fort bien exposer les explications. :-k
Si l'un d'entre vous peut retrouver le sujet en question... :pouce:

ViPHP
ViPHP | 1024 Messages

03 juil. 2007, 14:48

je crois que c'est ça :

http://www.phpfrance.com/forums/voir_sujet-27678.php

A+

Pascal

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

03 juil. 2007, 15:43

J'avais en effet omis que zeus avait fait cet excellent tuto... :merci:

Eléphant du PHP | 337 Messages

03 juil. 2007, 15:54

Oui, j'ai bien conscience de ce que je souhaite faire, mais il se trouve que dans le cas présent, la table dont je parle n'est liée à aucune autre, et l'identifiant de chaque ligne ne me sert qu'à des identifications ponctuelles (suppression, édition) : les changer n'aura donc aucun impact sur l'organisation et la persistance de mes données.

Toutefois, je présume qu'une telle fonction n'existe pas, étant donné que je viens presque de me faire fusiller pour hérésie manifeste :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 juil. 2007, 16:40

Salut,

Disons que ce que tu cherches à faire sera, au mieux, inutile pour le fonctionnement de ta base.
En effet, à part pour un "confort" de lecture, que les identifiants se suivent ou pas est inutile pour la base.

Je te conseille donc de ne pas perdre de temps à essayer de développer ça, sachant que tu risques d'introduire une faille dans ton projet et de laisser les identifiants en place.

Sinon, pour ce que tu cherches à faire, à part un traitement qui met à jour ligne après ligne et qui flush la table, je vois pas trop :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

03 juil. 2007, 19:33

Et si on brûlait l'hérétique ? :-* :langue: