mysql: auto_increment - Programmation
Marsh Posté le 30-03-2002 à 13:24:49
jai le meme probleme
ca sincrement par exemple jusqua 5 si je supprime le 5, la prochaine crée sera 6 c bizarre
donc voila
bon topic Fabrice
Marsh Posté le 30-03-2002 à 13:28:48
massanu a écrit a écrit : jai le meme probleme ca sincrement par exemple jusqua 5 si je supprime le 5, la prochaine crée sera 6 c bizarre donc voila bon topic Fabrice |
le principe meme des bases de données de type mysql
quand tu supprime une rangée, en fait ca supprime la rangée, mais l'espace libéré reste. Donc tu aura en quelque sortes un "trou"
exemple
1 blabla test
2 blabla toto
3 test toto
4 gnagna hihi
je supprimer la 3
on aura donc
1 blabla test
2 blabla toto
4 gnagna hihi
le trou de la suppression reste
si tu rajoute quelque chose, ca sera forcément apres la dernier ligne, donc
1 blabla test
2 blabla toto
4 gnagna hihi
5 haha toto
voilà A+
Marsh Posté le 30-03-2002 à 13:35:16
ouais c assez relou
ya pas une feinte pour detourner ca ?
Marsh Posté le 30-03-2002 à 13:49:46
mais moi je supprime toutes les entrées dans la base , il y a donc plus de trous mais cela s'incremente quand même!!!!!!
Marsh Posté le 30-03-2002 à 13:52:00
fabriceMerc a écrit a écrit : mais moi je supprime toutes les entrées dans la base , il y a donc plus de trous mais cela s'incremente quand même!!!!!! |
les trous tu les vois pas, je les ai montré explicitement, mais il n'apparaissent pas, c comme ca que c organisé ds le fichier de ta base de données
Marsh Posté le 30-03-2002 à 14:03:13
ca pose probleme pour moi par exemple
si on fait un systeme de news
et que sur la page des news on fait un lien vers la news suivante, et bien si ta ca
1 news1
2 news2
4 news4
sur la page de la news2 yaura un lien qui pointera vers la 3 et non pas vers la 4 c ca le probleme.
tu voit ce que je veut dire
Marsh Posté le 30-03-2002 à 14:56:43
Il est possible de forcer, lors de la création d'un nouvel enregistrement, la valeur d'un champ en auto_increment. Je ne sais pas quel est l'objectif exact, mais un petit algo tout con peut permettre de détecter les "trous" et éventuellement les remplir, ou alors ne pas utiliser l'option auto_increment et tout faire "à la main".
Marsh Posté le 30-03-2002 à 15:02:03
massanu a écrit a écrit : ca pose probleme pour moi par exemple si on fait un systeme de news et que sur la page des news on fait un lien vers la news suivante, et bien si ta ca 1 news1 2 news2 4 news4 sur la page de la news2 yaura un lien qui pointera vers la 3 et non pas vers la 4 c ca le probleme. tu voit ce que je veut dire |
Tu peux modifier ta table et ajouter un colonne "NewsSuivante" ou alors faire un script qui teste tous les numéros jusqu'à en trouver un valide. Ex: Tu te trouves sur la page 3, tu veux la suivante, mais la 4 n'existe plus: Tu lances une requ^ete pour savoir si la page identifiée par le numéro suivant la page courante (4 en l'occurence) existe. Ce n'est pas le cas, donc tu testes la page 5, etc. jusqu'à trouver une page valide (en s'assurant de ne pas ^etre sur la dernière page, bien s^ur! )
Marsh Posté le 04-04-2002 à 13:29:27
Meme soucis
C pas aussi derangeant chez moi mais j'aurais bien voulu y remedier.
Je modifie la valeur des mes id et les retrie a la main, pkoi ca n'efface pas ces "trous"?
Marsh Posté le 04-04-2002 à 14:03:43
massanu a écrit a écrit : jai le meme probleme ca sincrement par exemple jusqua 5 si je supprime le 5, la prochaine crée sera 6 c bizarre |
C'est bizarre, chez moi c'est l'inverse. Si je supprime le dernier, le compteur revient un cran en arrière.
Ce qui me pose d'ailleurs problème.
Marsh Posté le 04-04-2002 à 14:47:11
massanu a écrit a écrit : ca pose probleme pour moi par exemple si on fait un systeme de news et que sur la page des news on fait un lien vers la news suivante, et bien si ta ca 1 news1 2 news2 4 news4 sur la page de la news2 yaura un lien qui pointera vers la 3 et non pas vers la 4 c ca le probleme. tu voit ce que je veut dire |
C'est pas vraiement un problème d'auto-incréméntation çà !
Si tu as 4 news 1, 2, 3 et 4, et qua chacunne pointe sur la suivante :
Vers quoi pointe la 4 ?
Si tu suprime la 3 tu veux que la base fasse automatiquement pointer la 2 sur la 4, ou que la 4 devienne un 3 automatiquement ?
Dans ce dernier cas, que divient un enreg dans une autre table, qui pointait vers la 4 ?
L'autoincrémentation t'assure que deux enregs n'ont pas la même valeur sans que tu ais besoin de la caluler, c'est tout.
Pour supprimer les trous, la seule solution, c'est de recopier dans une autre table, mais il fait alors penser à faire suivre les relations !
[jfdsdjhfuetppo]--Message édité par Mara's dad--[/jfdsdjhfuetppo]
Marsh Posté le 30-03-2002 à 13:11:01
bon alors le truc c'est que je voudrais savoir comment réinitialiser mon Id ( qui est auto_incrementé ) à 0 .
Ca pose problème car lorsque je supprime toutes mes entrées dans la table les Ids continuent à s'incrémenter mais ne reprennent pas à 0.
Merci les gars!
[jfdsdjhfuetppo]--Message édité par fabriceMerc--[/jfdsdjhfuetppo]