Utiliser AUTO_INCREMENT en MySQL tout en n'ayant pas de trous dans le champs...
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007
-
21 août 2005 à 09:38
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
21 août 2005 à 11:46
Hi all
J'ai une DB MySQL avec une table qui contient le champs ID en AUTO_INCREMENT. Le soucis, c'est que quand on supprime une entrée dans la table, ça fait un trou dans le champ ID, par exemple $ID=1, $ID=2, $ID=4, quand on a supprimé le 3.
Est-ce possible que lors d'une supression, tout les champs ayant un ID suppérieur à celui supprimé voient leur ID soustrait de 1 pour ne jamais avoir ces trous ? (sans devoir faire une routine de boucle qui se charge de faire ça...)
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 21 août 2005 à 11:12
Oui, mais il ne faut pas oublier de changer AUTO_INCREMENT, car si un champ est ajouté, y'aura encore un trou avec cette fois un décalage de 2 s'il supprime encore une entrée.
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 21 août 2005 à 11:43
Merci pour vos réponse :)
Mais pour UPDATE table SET id=id-1 WHERE id>machin, il faut quand même passer par une boucle non ? Car il peut y avoir 100,1000 champs après l'ID qu'a été supprimé.
Anthomicro, j'ai pas trop compris ton dernier message :(
@Z3RtY25 ==
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 21 août 2005 à 11:46
"Mais pour UPDATE table SET id=id-1 WHERE id>machin, il faut quand même passer par une boucle non ?"
Non, une seule requête suffit si tu supprimes un champ, après si t'en
supprime 1000 bah tu mets une variable qui compte le nombre de champs
supprimés :
'UPDATE table SET id=id-'.$variable.' WHERE id>machin'
ensuite pour mon dernier message il faut que le prochain id soit bien
l'id maximum+1 donc une fois le nombre de champs comptés (et enlevés)
il faut bien définir un prochain id (le prochain enregistrement inséré
aura cette valeur) et donc pour modifier l'autoincrement on fait une
requête ALTER TABLE nom_table AUTOINCREMENT=valeur
ou valeur est la prochaine valeur de l'id du futur enregistrement inséré