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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  comment avoir juste le bon coté du auto_increment de mysql?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment avoir juste le bon coté du auto_increment de mysql?

n°333622
fbtheretur​n
Posté le 14-03-2003 à 16:05:38  profilanswer
 

Bonjour, je vous explique,  
auto_increment permet de générer un nombre unique
mais le problème
c'est qu'une fois 20 enregistrements sauvegardés puis qu'on supprime tout ou une partie,  
lorsqu'on en rentre 1 nouveau, auto_increment génére "21"
alors que un nombre inférieur aurait pu aller...
 
comment fait on pour avoir par exemple, le premier nombre libre à partir de 1?

mood
Publicité
Posté le 14-03-2003 à 16:05:38  profilanswer
 

n°333629
nraynaud
lol
Posté le 14-03-2003 à 16:10:55  profilanswer
 

fbthereturn a écrit :

Bonjour, je vous explique,  
auto_increment permet de générer un nombre unique
mais le problème
c'est qu'une fois 20 enregistrements sauvegardés puis qu'on supprime tout ou une partie,  
lorsqu'on en rentre 1 nouveau, auto_increment génére "21"
alors que un nombre inférieur aurait pu aller...
 
comment fait on pour avoir par exemple, le premier nombre libre à partir de 1?


 
t'as vraiment envie d'exploser ta complexité ?

n°333654
fbtheretur​n
Posté le 14-03-2003 à 16:55:50  profilanswer
 

il n'y a pas un truc simple pour résoudre cela?

n°333751
nraynaud
lol
Posté le 14-03-2003 à 18:53:23  profilanswer
 

fbthereturn a écrit :

il n'y a pas un truc simple pour résoudre cela?


 
Y'a vraiment un intérèt à le faire ?

n°333772
Hermes le ​Messager
Breton Quiétiste
Posté le 14-03-2003 à 19:19:56  profilanswer
 

fbthereturn a écrit :

Bonjour, je vous explique,  
auto_increment permet de générer un nombre unique
mais le problème
c'est qu'une fois 20 enregistrements sauvegardés puis qu'on supprime tout ou une partie,  
lorsqu'on en rentre 1 nouveau, auto_increment génére "21"
alors que un nombre inférieur aurait pu aller...
 
comment fait on pour avoir par exemple, le premier nombre libre à partir de 1?


 
Pas possible/inutile.
 
Pour ce que tu veux faire, il faut incrémenter et décrémenter à la main et faire une batterie de tests/modifications pour faire un décalage. Tu inventes un champ "ordre". Et tu réalises une boucle en faisant descendre de 1 tous les valeurs du champ "ordre" supérieur à ton champ qui vient de disparaitre.
 
Mais, c'est très rare d'avoir besoin de faire ça. ça peut servir lorsqu'on propose dans un site dynamique permettant de creer ses propres catégories d'ordonner ces mêmes catégories.

n°333789
darklord
You're welcome
Posté le 14-03-2003 à 19:33:59  profilanswer
 

fbthereturn a écrit :

Bonjour, je vous explique,  
auto_increment permet de générer un nombre unique
mais le problème
c'est qu'une fois 20 enregistrements sauvegardés puis qu'on supprime tout ou une partie,  
lorsqu'on en rentre 1 nouveau, auto_increment génére "21"
alors que un nombre inférieur aurait pu aller...


 
Pour bien faire la primary key d'un record est identifiant de ce record à jamais meme si il a été effacé. Imagine que pour une raison lambda tu gardes la référence vers le record Id 18 dans un client quelconque. Qqun d'autre vire le record 18 puis tu récrée un autre,complètement différent et mySQL lui file l'id 18. Avoue que c'est un peu foireux non ;)


---------------
Just because you feel good does not make you right
n°333801
uriel
blood pt.2
Posté le 14-03-2003 à 19:53:02  profilanswer
 

oui, et en plus c vraiment faire compliqué...
pourquoi s'embeter avec ça...  :??:

n°333837
mrbebert
Posté le 14-03-2003 à 20:59:26  profilanswer
 

Je crois qu'il y a une commande pour "réinitialiser" le compteur. Mais laquelle ... :??:

n°333840
drasche
Posté le 14-03-2003 à 21:15:08  profilanswer
 

il n'y en a qu'une à ma connaissance: en recréant la table.  Même en Access, sauf que ça s'appelle compactage, mais en réalité, il recrée l'entièreté du fichier MDB pour éliminer les zones inutilisées.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°333990
fbtheretur​n
Posté le 15-03-2003 à 10:56:24  profilanswer
 

DarkLord a écrit :


 
Pour bien faire la primary key d'un record est identifiant de ce record à jamais meme si il a été effacé. Imagine que pour une raison lambda tu gardes la référence vers le record Id 18 dans un client quelconque. Qqun d'autre vire le record 18 puis tu récrée un autre,complètement différent et mySQL lui file l'id 18. Avoue que c'est un peu foireux non ;)


 
ok pour ça .. c à moi de vérifier
 
sinon, oui

Code :
  1. ça peut servir lorsqu'on propose dans un site dynamique permettant de creer ses propres catégories d'ordonner ces mêmes catégories.


 
c un peu ça que je veux faire
 
et quand la primary key arrive au bout de la valeur admissible?
qu'est ce qu'il se passe?
genre 255 pour un tinyint.. ça fait quoi aprés?

mood
Publicité
Posté le 15-03-2003 à 10:56:24  profilanswer
 

n°334058
darklord
You're welcome
Posté le 15-03-2003 à 14:44:22  profilanswer
 

fbthereturn a écrit :


 
ok pour ça .. c à moi de vérifier
 
sinon, oui

Code :
  1. ça peut servir lorsqu'on propose dans un site dynamique permettant de creer ses propres catégories d'ordonner ces mêmes catégories.


 
c un peu ça que je veux faire


 
bin dans ce cas tu as ton id autoicrémenté et une colonne supplémentaire avec l'id de la catégorie si tu veux pouvoir la réallouer etc ... mais agir sur une vraie primary key c'est une erreur de design


---------------
Just because you feel good does not make you right
n°334059
darklord
You're welcome
Posté le 15-03-2003 à 14:44:55  profilanswer
 

fbthereturn a écrit :


et quand la primary key arrive au bout de la valeur admissible?
qu'est ce qu'il se passe?
genre 255 pour un tinyint.. ça fait quoi aprés?


 
unsigned -> ca se crashe je pense
signed -> -255


---------------
Just because you feel good does not make you right
n°334096
Hermes le ​Messager
Breton Quiétiste
Posté le 15-03-2003 à 16:36:36  profilanswer
 

DarkLord a écrit :


 
bin dans ce cas tu as ton id autoicrémenté et une colonne supplémentaire avec l'id de la catégorie si tu veux pouvoir la réallouer etc ... mais agir sur une vraie primary key c'est une erreur de design


 
Exact !  :jap:  C'est exactement ce que j'ai fait dans mon dernier site pour une cliente. ;)

n°334317
darklord
You're welcome
Posté le 16-03-2003 à 11:08:29  profilanswer
 

Hermes le Messager a écrit :


 
Exact !  :jap:  C'est exactement ce que j'ai fait dans mon dernier site pour une cliente. ;)
 


 
[:rougit]


---------------
Just because you feel good does not make you right
n°351535
fbtheretur​n
Posté le 03-04-2003 à 14:22:32  profilanswer
 

quelqu'un peut confirmer cela???  
 

Code :
  1. et quand la primary key arrive au bout de la valeur admissible?
  2. qu'est ce qu'il se passe?
  3. genre 255 pour un tinyint.. ça fait quoi aprés?
  4. unsigned -> ca se crashe je pense
  5. signed -> -255

n°351943
Profil sup​primé
Posté le 03-04-2003 à 18:26:43  answer
 

Bon je résume la situation.
Dans une relation de clients, on en insert 20
Donc client 1,2,3 ... 20
On vire le 20ième puis on insert un nouveau client, ce nouveau client aura un id 21, ce qui laisse un trou entre 19 et 21, y'a pas un ordre SQL qui donne à l'attribut d'auto increment la bonne valeur après des suppressions ???
 
++

n°353188
fbtheretur​n
Posté le 04-04-2003 à 17:26:47  profilanswer
 

Sans inserer un nouvel enregistrement,
est il possible de savoir  
quel valeur id(autoincrement) va avoir?


Message édité par fbthereturn le 04-04-2003 à 17:27:21
n°353263
Dj YeLL
$question = $to_be || !$to_be;
Posté le 04-04-2003 à 20:20:37  profilanswer
 

Je comprends pas pkoi utiliser l'autoincrementation ds ce cas ... l'A.I. sert justement à pas se faire chier avec des ID unique a rentrer a chaque fois. Si c pour tout reorganiser a chaque fois, l'AI ne sert à plus rien ... dans ce cas autant tout rentrer manuellement. Meme si, comme ds ton exemple, ca devai sauter de 19 à 21 ... ca pose pas de pb il me semble, si ?
 
Edit, de toute façon, dans ce cas la, si c pour que tes chiffres aillent de 1 à 48 si tu as 48 enregistrement, puis de 1 à 38 si tu en vires 10 ... autant ne rien mettre et utiliser la fonction COUNT pour savoir combien il y a de données ds la BDD...


Message édité par Dj YeLL le 04-04-2003 à 20:21:56

---------------
Gamertag: CoteBlack YeLL
n°354244
Profil sup​primé
Posté le 06-04-2003 à 23:35:13  answer
 

Je conserve les avantages de l'auto increment mais j'aimerais juste que la liste soit sans trou si on en vire qq uns et qu'on en rajoute après ... :whistle:

n°354245
mrbebert
Posté le 06-04-2003 à 23:42:12  profilanswer
 

Tu peux passer un script de temps en temps qui va modifier les numéros. Mais attention si ces numéros sont utilisés à un autre endroit :/  
 
Ou alors tu crées une liste des numéros non attribués. A l'insertion, tu prends un numéro dans cette liste et tu l'utilises. S'il n'y en a pas dans la liste, tu fais l'insertion sans préciser de numéro pour utiliser l'auto-incrémentation :)  
 
Autre possibilité : tu ne supprimes pas les enregistrements de ta table, mais tu les marque comme étant réutilisables. Au moment d'insérer, tu regardes si des numéros sont disponibles et, si oui, tu en utilise un (tu fais un UPDATE au lieu d'un INSERT) :)

n°358153
Profil sup​primé
Posté le 10-04-2003 à 19:32:50  answer
 

Pas con, la dernière technique avec l'update :hello:

n°377561
fbtheretur​n
Posté le 30-04-2003 à 09:49:26  profilanswer
 

Sans inserer un nouvel enregistrement,
est il possible de savoir  
quel valeur id(autoincrement) va avoir?

n°377576
gizmo
Posté le 30-04-2003 à 09:54:30  profilanswer
 

DarkLord a écrit :


 
unsigned -> ca se crashe je pense
signed -> -255


 
si c'est signé, ca ne va pas jusqu'à 255, mais de -128 à 127

n°377643
dropsy
et bonne chance surtout...
Posté le 30-04-2003 à 10:20:47  profilanswer
 

fbthereturn a écrit :

Sans inserer un nouvel enregistrement,
est il possible de savoir  
quel valeur id(autoincrement) va avoir?
 


 
phpMyAdmin donne le numéro suivant, il doit donc y avaoir une fonction mysql qui te donne cette valeur. cf doc.

n°377966
fbtheretur​n
Posté le 30-04-2003 à 12:02:20  profilanswer
 

et quand on insère un enregistrement, ça pourrait nous retourner l'id de l'enregistrement?

n°378055
dropsy
et bonne chance surtout...
Posté le 30-04-2003 à 12:58:40  profilanswer
 

fbthereturn a écrit :

et quand on insère un enregistrement, ça pourrait nous retourner l'id de l'enregistrement?


 
à avoir pê du côté de LAST_INSERT_ID()

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  comment avoir juste le bon coté du auto_increment de mysql?

 

Sujets relatifs
Aidez une débutante à se connecter sur une BD MySql !!!!!! HELPmysql_real_connect
[PHP-MySQL] Existe-t il une fonction qui renvoie la date de ....MySQL 4.0 ca doit etre bon !!! les parametres de eskue ???
[MySql] Containtes Help ![MySQL]Est que ca vaut le coup d'updater mysql 3->4
Passer d'un fichier XML à MySQLHacking et faille de sécurité MySQL, aidez-moi à me protéger.
Prb MySQL[MYSQL]Fonctionnnement du type DECIMAL dans une base MySQL
Plus de sujets relatifs à : comment avoir juste le bon coté du auto_increment de mysql?


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