Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2904 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Comment renuméroter automatiquement des ID?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment renuméroter automatiquement des ID?

n°1197452
nombril
Posté le 12-09-2005 à 10:54:19  profilanswer
 

Bonjour,
je cherche simplement à renuméroter un champ ID auto_increment
 
mon probleme est que de temps en temps je supprime une ligne de la table. du coup le champ id a un "trou"
ex: 1, 2, 3, 5,6 etc.

Ma question
: est ce qu'il existe une fontion sql qui permet de modifier un champ auto_increment pour qu'il n'y est plus ces fameux trou?
 
Je pourrais le faire a la main, mais si je décale les id (ex precedent: le 5 devient 4 et le 6 ->5) l'id suivant qui sera généré automatiquement sera 7 alors que moi je voudrais qu'il devienne 6.
 
Je sais pas si je m'exprime clairement! :whistle:  
 
Merci.

mood
Publicité
Posté le 12-09-2005 à 10:54:19  profilanswer
 

n°1197455
multani
Dépressionnisé
Posté le 12-09-2005 à 10:56:35  profilanswer
 

Pourquoi tu veux faire ça ?
Ya pas vraiment d'intérêt (à part pour faire joli) ...

n°1197456
betsamee
Asterisk Zeperyl
Posté le 12-09-2005 à 10:57:40  profilanswer
 

ouaip perso je vois vraiment pas l'interet

n°1197460
omega2
Posté le 12-09-2005 à 10:58:32  profilanswer
 

avec mysql, on peut le faire (voir la doc de mysql pour plus de precision, moi, je l'ai jamais fait à la main)
pour les autres bases de données, j'en ai aucune idée.

n°1197461
FlorentG
Posté le 12-09-2005 à 10:58:35  profilanswer
 

auto_increment sert à donner un chiffre unique à une ligne, on s'en fout complètement s'il y a des trous ou non...
 
Pour gérer un vrai numéro d'ordre sans trou, bah faut le gérer dans ton prog.... genre dès que tu supprimes un élément, tu décales les éléments suivants avec un p'tit update... Bien sûr il te faudra un autre champ de type INT

n°1197464
nombril
Posté le 12-09-2005 à 11:00:07  profilanswer
 

si, parce que j'affiche le resultat d'une ligne en fontion d'un ID aleatoire sur une de mes pages. Donc quand il y a un trou, il ne peut rien m'afficher...


Message édité par nombril le 12-09-2005 à 11:03:09
n°1197469
0x90
Posté le 12-09-2005 à 11:05:47  profilanswer
 

bha si il trouve rien, tu relance la requète ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1197470
betsamee
Asterisk Zeperyl
Posté le 12-09-2005 à 11:05:58  profilanswer
 

tu peux extraire un id existant dans ta table de maniere aleatoire ou bien adopter la technique preconisee par FlorentG

n°1197473
FlorentG
Posté le 12-09-2005 à 11:07:49  profilanswer
 

C'est qu'il y a alors un problème de conception dans l'application [:spamafote]
 

n°1197474
nombril
Posté le 12-09-2005 à 11:08:33  profilanswer
 

ok, donc faut que je gere ça avec le php quand je supprime une ligne.
C'est tout ce que je voulais savoir.  
Merci
 
PS: je vais voir dans la doc mysql "omega2"

mood
Publicité
Posté le 12-09-2005 à 11:08:33  profilanswer
 

n°1197475
PatraK
Posté le 12-09-2005 à 11:08:42  profilanswer
 

un drop de ta colonne auto_increment, puis tu le recrees ensuite ?

n°1197484
omega2
Posté le 12-09-2005 à 11:20:14  profilanswer
 

voilà requette :
ALTER TABLE matable AUTO_INCREMENT = 15;
 
Mais ca ne marcherait qu'avec des tables de types myisam. pour les innodb, il faut couper et redémarrer mysql pour qu'il reprenne l'id maximum comme départ du prochain auto_increment.
 
Enfin bon, de toute maniére, dans ton cas, il vaut mieux que tu le géres directement dans le programme plustôt que d'utiliser une telle bidouille vu que c'est une opération que tu feras (trés) souvent.
la modification de l'auto_incerment automatique est une opération de maintenance qui ne doit être faite que couplé à un tassement des id et ce en cas de risque d'atteinte de l'id maximum possible dans la colone.

n°1197485
nombril
Posté le 12-09-2005 à 11:20:17  profilanswer
 

ok je m'y attele  :)
 
edit:  
ALTER TABLE matable AUTO_INCREMENT = 15; ça marche impecable. merci beaucoup!


Message édité par nombril le 12-09-2005 à 11:27:44
n°1959386
chris188
Posté le 21-01-2010 à 12:08:36  profilanswer
 

Bonjour,
J'ai 3 tables innodb liées dont la première stocke des documents (modèles et documents).
Chaque documents composées de zones, chaque zone composée d'un paramétrage.
L'ajout d'un document copie le modèle sous un autre Id et devient un document.
 
15 modèles composés en moyenne de 50 zones composées en moyenne de 5 paramétrages
300 personnes vont quotidiennement créer 7 documents   (Id en Int(5) et NumAuto ça à l'air court)
 
et voici enfin ma question :
L'ordre des zones doit être paramétrable, alors j'utilise un champ numérique 'Ordre' dans la table 'Zones'.
Si malheureusement j'arrive à un cas comme  10,20,30,33,34,35,40,etc
Et que je voudrais Renuméroter en 10,20,30,40,50,60,70,80,etc  (pour pouvoir insérer d'autres zones entre 33 et 34)
 
En une seule requête ?  Des idées ?
Pour l'instant je vais faire    update Zones set Ordre=Ordre*2 where Doc=$IdDoc
 
Merci


---------------
http://www.chrisweb.be
n°1959403
rufo
Pas me confondre avec Lycos!
Posté le 21-01-2010 à 13:00:59  profilanswer
 

Ouvres un autre topic! Bonjour le déterrage, là :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comment renuméroter automatiquement des ID?

 

Sujets relatifs
Créer un mini formulaire qui listerait automatiquement !ne pas revenir a la ligne automatiquement !
generer automatiquement des graphes excel : est-ce posible?Graphics => dessin sur un JLayeredFrame qui s'efface automatiquement
[batch] modifier automatiquement l'extension de fichiers qcqsupprimer automatiquement des entrées dans un table sql
detecter automatiquementCombobox selectionné automatiquement la 1ere ligne
lancer automatiquement un batchrenommer automatiquement une case dans un fichier Excel
Plus de sujets relatifs à : Comment renuméroter automatiquement des ID?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR